(function(config) {
    var ba = navigator.userAgent.toLowerCase(),
        ca = window,
        fa = document,
        ga = fa.documentElement;

    function ia(a) { return -1 !== ba.indexOf(a) }
    var na = /([a-z0-9]*\d+[a-z0-9]*)/;

    function oa() {
        var a = pa;
        if (!a) return null;
        var a = a.toLowerCase(),
            b = null;
        if (b = a.match(/angle \((.*)\)/)) a = b[1], a = a.replace(/\s*direct3d.*$/, "");
        a = a.replace(/\s*\([^\)]*wddm[^\)]*\)/, "");
        if (0 <= a.indexOf("intel")) {
            b = ["Intel"];
            0 <= a.indexOf("mobile") && b.push("Mobile");
            (0 <= a.indexOf("gma") || 0 <= a.indexOf("graphics media accelerator")) && b.push("GMA");
            if (0 <= a.indexOf("haswell")) b.push("Haswell");
            else if (0 <= a.indexOf("ivy")) b.push("HD 4000");
            else if (0 <= a.indexOf("sandy")) b.push("HD 3000");
            else if (0 <= a.indexOf("ironlake")) b.push("HD");
            else {
                0 <= a.indexOf("hd") && b.push("HD");
                var c = a.match(na);
                c && b.push(c[1].toUpperCase())
            }
            return b = b.join(" ")
        }
        return 0 <= a.indexOf("nvidia") || 0 <= a.indexOf("quadro") || 0 <= a.indexOf("geforce") || 0 <= a.indexOf("nvs") ? (b = ["nVidia"], 0 <= a.indexOf("geforce") && b.push("geForce"), 0 <= a.indexOf("quadro") && b.push("Quadro"), 0 <= a.indexOf("nvs") && b.push("NVS"), a.match(/\bion\b/) && b.push("ION"), a.match(/gtx\b/) ? b.push("GTX") : a.match(/gts\b/) ? b.push("GTS") : a.match(/gt\b/) ? b.push("GT") : a.match(/gs\b/) ? b.push("GS") : a.match(/ge\b/) ?
            b.push("GE") : a.match(/fx\b/) && b.push("FX"), (c = a.match(na)) && b.push(c[1].toUpperCase().replace("GS", "")), 0 <= a.indexOf("titan") ? b.push("TITAN") : 0 <= a.indexOf("ti") && b.push("Ti"), b = b.join(" ")) : 0 <= a.indexOf("amd") || 0 <= a.indexOf("ati") || 0 <= a.indexOf("radeon") || 0 <= a.indexOf("firegl") || 0 <= a.indexOf("firepro") ? (b = ["AMD"], 0 <= a.indexOf("mobil") && b.push("Mobility"), c = a.indexOf("radeon"), 0 <= c && b.push("Radeon"), 0 <= a.indexOf("firepro") ? b.push("FirePro") : 0 <= a.indexOf("firegl") && b.push("FireGL"), 0 <= a.indexOf("hd") &&
            b.push("HD"), 0 <= c && (a = a.substring(c)), (c = a.match(na)) && b.push(c[1].toUpperCase().replace("HD", "")), b = b.join(" ")) : a.substring(0, 100)
    }
    var qa = "microsoft basic render driver;vmware svga 3d;Intel 965GM;Intel B43;Intel G41;Intel G45;Intel G965;Intel GMA 3600;Intel Mobile 4;Intel Mobile 45;Intel Mobile 965".split(";"),
        ra = "ActiveXObject" in ca,
        va = "devicePixelRatio" in ca && 1 < ca.devicePixelRatio || ra && "matchMedia" in ca && ca.matchMedia("(min-resolution:144dpi)") && ca.matchMedia("(min-resolution:144dpi)").matches,
        wa = ia("windows nt"),
        xa = -1 !== ba.search(/windows nt [1-5]\./),
        ya = -1 !== ba.search(/windows nt 5\.[12]/),
        za = xa && !ya;
    ia("windows nt 10");
    var Da = ia("windows phone"),
        Ea = ia("macintosh"),
        Fa = ia("Mb2345Browser"),
        Ga = ia("ipad;") || ia("ipad "),
        Ha = Ga && va,
        Ka = ia("ipod touch;"),
        La = ia("iphone;") || ia("iphone "),
        Ma = La || Ga || Ka,
        Na = Ma && -1 !== ba.search(/ os [456]_/);
    Ma && ba.search(/ os [4-8]_/);
    Ma && ba.search(/ os [78]_/);
    Ma && ia("os 8_");
    var Qa = Ma && ia("os 10_"),
        Ra = ia("android"),
        Sa = -1 !== ba.search(/android [123]/);
    ia("android 4");
    Ra && -1 === ba.search(/android [1-4]/) || ba.search(/android 4.4/);
    var Ta = Ra ? "android" : Ma ? "ios" : wa ? "windows" : Ea ? "mac" : "other",
        Ua = ra && !ca.XMLHttpRequest,
        Va = ra && !fa.querySelector,
        Wa = ra && !fa.addEventListener,
        Xa = ra && ia("msie 9"),
        Ya = ra && ia("msie 10"),
        Za = ra && ia("rv:11"),
        $a = Wa || Xa,
        ab = ia("edge"),
        bb = ia("qtweb"),
        cb = ia("ucbrowser"),
        db = ia("alipay") || Ra && cb,
        eb = ia("miuibrowser"),
        fb = ia("micromessenger"),
        gb = ia("mqqbrowser"),
        hb = ia("baidubrowser"),
        chrome = (ia("chrome") || ia("crios")) && !fb && !hb && !gb && !ab && !eb,
        ib = chrome && ia("chromium"),
        jb = chrome && !ib && 30 < parseInt(ba.split("chrome/")[1]),
        kb = ia("firefox"),
        lb = kb && 27 < parseInt(ba.split("firefox/")[1]),
        mb = (Ea || Ma) && ia("safari") && ia("version/"),
        nb = Ea && mb && 7 < parseInt(ba.split("version/")[1]),
        ob = Ma && ia("aliapp"),
        pb = Ma && (!gb && !cb && !fb && !chrome && !kb && !mb || ob && !cb),
        qb = Ra || Ma || Da || ia("mobile"),
        rb = "ontouchstart" in fa,
        sb = ca.navigator && ca.navigator.msPointerEnabled && !!ca.navigator.msMaxTouchPoints,
        tb = ca.navigator && !!ca.navigator.maxTouchPoints,
        ub = !rb && (tb || sb),
        vb = rb || ub,
        wb = function() {
            if (!qb) return ca.devicePixelRatio || 1;
            var a = document.getElementsByTagName("meta");
            if (window.parent && window.parent !== window) try {
                if (window.parent.location.origin === window.location.origin) a = window.parent.document.getElementsByTagName("meta");
                else return 1
            } catch (b) { return 1 }
            for (var c = a.length - 1; 0 <= c; c -= 1)
                if ("viewport" === a[c].name) {
                    var c = a[c].content,
                        d; - 1 !== c.indexOf("initial-scale") && (d = parseFloat(c.split("initial-scale=")[1]));
                    a = -1 !== c.indexOf("minimum-scale") ? parseFloat(c.split("minimum-scale=")[1]) : 0;
                    c = -1 !== c.indexOf("maximum-scale") ? parseFloat(c.split("maximum-scale=")[1]) : Infinity;
                    if (d) { if (c >= a) return d > c ? c : d < a ? a : d } else if (c >= a) return 1 <= a ? 1 : Math.min(c, 1);
                    console && console.log && console.log("viewport\u53c2\u6570\u4e0d\u5408\u6cd5");
                    return null
                }
        }(),
        xb = va && (!qb || !!wb && 1 <= wb),
        yb = ra && "transition" in ga.style,
        zb = !!fa.createElementNS && !!fa.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGRect,
        Ab = fa.createElement("canvas"),
        Bb = !(!Ab || !Ab.getContext),
        Cb = window.URL || window.webkitURL,
        Db = !ra && !ab && !(cb && Ra) && window.Worker && Cb && Cb.createObjectURL && window.Blob,
        Eb = "",
        pa = "",
        Fb = 0,
        Ib = window.forceWebGL ? { alpha: !0, antialias: !0, depth: !0 } : { alpha: !0, antialias: !0, depth: !0, failIfMajorPerformanceCaveat: !0, preserveDrawingBuffer: !0, stencil: !0 },
        Jb = function() {
            if (!window.forceWebGL && (!Bb || !Db || pb && ob && !cb)) return !1;
            for (var a = ["webgl", "experimental-webgl", "moz-webgl"], b = null, c = 0; c < a.length; c += 1) {
                try { b = Ab.getContext(a[c], Ib) } catch (d) {}
                if (b) {
                    if (b.drawingBufferWidth !== Ab.width || b.drawingBufferHeight !== Ab.height) break;
                    if (window.forceWebGL) return Eb = a[c], Fb = Infinity, !0;
                    if (!b.getShaderPrecisionFormat ||
                        !b.getParameter || !b.getExtension) break;
                    Fb = b.getParameter(b.MAX_RENDERBUFFER_SIZE);
                    var e = b.getParameter(b.MAX_VIEWPORT_DIMS);
                    if (!e) break;
                    Fb = Math.min(Fb, e[0], e[1]);
                    mb && "mac" === Ta && (Fb = Math.min(Fb, 4096));
                    e = Math.max(screen.width, screen.height);
                    xb && (e *= Math.min(2, window.devicePixelRatio || 1));
                    if (e > Fb) break;
                    if (23 > b.getShaderPrecisionFormat(35632, 36338).precision || 23 > b.getShaderPrecisionFormat(35633, 36338).precision) break;
                    pa = b.getExtension("WEBGL_debug_renderer_info") ? b.getParameter(37446) : null;
                    if ((b = oa()) &&
                        -1 !== qa.indexOf(b)) break;
                    Eb = a[c];
                    return !0
                }
            }
            return !1
        }(),
        Kb = Jb && (jb || lb || nb) && ("mac" === Ta || "windows" === Ta) && !qb,
        Lb = !Bb || bb || Da || qb && kb || Xa || Na || Ha || Ka || Sa || ia("gt-n710") || za,
        Mb = !Lb && !Kb,
        Nb = Kb ? "vw" : Lb ? "d" : Mb ? "dv" : "v",
        Ob = ia("webkit"),
        Pb = "WebKitCSSMatrix" in ca && "m11" in new window.WebKitCSSMatrix,
        Qb = "MozPerspective" in ga.style,
        Rb = "OTransition" in ga.style,
        Sb = yb || Pb || Qb || Rb,
        Tb = void 0 !== config[8] ? config[8] : !0,
        Ub = void 0 !== config[9] ? config[9] : !0,
        Vb = void 0 !== config[10] ? config[10] : !0,
        Wb = void 0 !== config[11] ? config[11] :
        !0,
        Xb = void 0 !== config[12] ? config[12] : null,
        Yb = !zb && qb && Bb,
        Zb = !0;
    try {
        if ("undefined" === typeof ca.localStorage) Zb = !1;
        else {
            var $b = (new Date).getTime() + "";
            ca.localStorage.setItem("_test", $b);
            ca.localStorage.getItem("_test") !== $b && (Zb = !1);
            ca.localStorage.removeItem("_test")
        }
    } catch (ac) { Zb = !1 }
    var bc = parseInt(ba.split("chrome/")[1]),
        cc = Tb && Bb;
    config.l = {
        $pa: Ga,
        aqa: La,
        size: La ? 100 : Ra ? 200 : 500,
        Cy: Ea,
        fya: wa,
        FI: Ma,
        cDa: Qa,
        Bl: Ra,
        yka: Sa,
        w2: db,
        Qy: Ta,
        eH: hb,
        iua: gb,
        MD: mb,
        b9: fb,
        Qr: ra,
        mi: Ua,
        Iu: Va,
        P3: Xa,
        O3: Ya,
        ue: Wa,
        R3: $a,
        dqa: Za,
        Gna: ab,
        gqa: ra && !Za,
        $ra: Fa,
        Zr: Zb,
        yi: cc && Zb && Wb && !qb && chrome,
        Cf: Xb,
        geolocation: qb || ra && !Wa || ab,
        wxa: cb,
        tK: cb && !chrome,
        chrome: chrome,
        Y1: !0,
        cQ: kb,
        Z: qb,
        ksa: qb && Ob,
        m5: qb && Pb,
        jsa: qb && ca.opera,
        Mc: va,
        CK: wb,
        ia: xb,
        Bf: vb,
        o5: sb,
        AS: tb,
        n6: ub,
        Lla: chrome && 57 <= bc,
        Mla: !qb && chrome && 64 <= bc,
        Z8: Ob,
        eqa: yb,
        a9: Pb,
        uoa: Qb,
        dta: Rb,
        $G: Sb,
        so: zb,
        Nk: Bb,
        ER: Db,
        vz: Vb,
        wf: Kb,
        W8: Eb,
        X8: Ib,
        SQ: pa,
        Yra: Fb,
        Gya: !1,
        Zt: Tb && !Lb,
        J0: Tb ? Nb : "d",
        e1: Tb ? Jb : !1,
        fK: cc,
        mq: Tb && Jb,
        nDa: Tb && (!Lb || Jb),
        Mp: Ub && !!ca.WebSocket && !hb,
        $Da: Yb,
        mta: Bb || Yb ? "c" : "d"
    };
    var dc = config;
    config = void 0;
    var ec = { overlay: ["style"], "AMap.IndoorMap": ["AMap.CustomLayer", "cvector"], "AMap.IndoorMap3D": ["Map3D"], "AMap.MarkerList": ["AMap.TplUtils"], Map3D: ["vectorlayer", "wgl", "AMap.CustomLayer", "rbush"], "AMap.Heatmap": ["AMap.CustomLayer"], "AMap.DistrictLayer": ["MVT"], vectorForeign: ["gridmap", "MVT"], "AMap.GltfLoader": ["AMap.CustomLayer", "Map3D"], "AMap.LabelsLayer": ["rbush", "promise"] };
    window.AMap ? (window.AMap.version = "1555590779641", window.AMap.xK = { uL: function(a) { a(dc) } }) : window.AMap = { version: "1555590779641", xK: { uL: function(a) { a(dc) } } };
    dc.vj = "1555590779641";
    dc.iu = ec;
    dc.bJ = "raster";
    for (var fc = document.head || document.getElementsByTagName("head")[0], gc = '.vml{behavior:url(#default#VML);display:inline-block;position:absolute}.amap-custom{top:0;left:0;position:absolute}.amap-container img{max-width:none!important;max-height:none!important}.amap-container{touch-action:none;position:relative;overflow:hidden;background:#fcf9f2 url();-ms-touch-action:none}.amap-drags,.amap-layers{width:100%;height:100%;position:absolute;overflow:hidden}.amap-layer img{pointer-events:none}.amap-e,.amap-maps{width:100%;height:100%}.amap-maps,.amap-e,.amap-layers,.amap-tile,.amap-tile-container{position:absolute;left:0;top:0;overflow:hidden}.amap-context{position:absolute;left:0;top:0}.amap-overlays,.amap-markers,.amap-marker{position:absolute;left:0;top:0}.amap-layers{z-index:0}.amap-overlays{z-index:110;cursor:default}.amap-markers{z-index:120}.amap-controls{z-index:150}.amap-copyright{position:absolute;display:block!important;left:77px;height:16px;bottom:0;padding-bottom:3px;font-size:11px;font-family:Arial,sans-serif;z-index:160}.amap-logo{position:absolute;bottom:1px;left:1px;z-index:160;height:20px}.amap-logo img{width:73px!important;height:20px!important;border:0;vertical-align:baseline!important}.amap-icon{position:relative;z-index:1}.amap-icon img{position:absolute;z-index:-1}.amap-marker-label{position:absolute;z-index:2;border:1px solid blue;background-color:white;white-space:nowrap;cursor:default;padding:3px;font-size:12px;line-height:14px}.amap-info{position:absolute;left:0;z-index:140;width:320px}.amap-menu{position:absolute;z-index:140;_width:100px}.amap-info-close{position:absolute;right:5px;_right:12px;+right:11px;top:5px;_top:2px;+top:2px;color:#c3c3c3;text-decoration:none;font:bold 16px/14px Tahoma,Verdana,sans-serif;width:14px;height:14px}.amap-info-outer,.amap-menu-outer{box-shadow:0 1px 2px rgba(0,0,0,0.1);background:none repeat scroll 0 0 white;border-radius:2px;padding:1px;text-align:left}.amap-menu-outer:hover{box-shadow:0 1px 2px rgba(0,0,0,0.3)}.amap-info-contentContainer:hover .amap-info-outer{box-shadow:0 1px 2px rgba(0,0,0,0.3)}.amap-info-content{position:relative;background:#fff;padding:10px 18px 10px 10px;line-height:1.4;overflow:auto}.amap-marker-content{position:relative}.amap-info{_width:320px}.amap-menu{_width:100px}.amap-info-sharp-old{overflow:hidden;position:absolute;background-image:url(http://webapi.amap.com/images/arrows.png)}.bottom-center .amap-info-sharp-old{height:12px;margin:0 auto;width:20px;background-position:center 12px;top:100%;margin-top:-9px;left:50%;margin-left:-10px}.bottom-left .amap-info-sharp-old{height:12px;width:13px;background-position:-16px -46px;top:100%;margin-top:-9px}.bottom-right .amap-info-sharp-old{height:12px;width:13px;top:-1px;background-position:-56px -46px;left:100%;margin-left:-13px;top:100%;margin-top:-9px}.middle-left .amap-info-sharp-old{height:20px;width:12px;background-position:left;top:50%;margin-top:-10px;margin-left:-11px}.center .amap-info-sharp-old{display:none}.middle-right .amap-info-sharp-old{height:20px;margin-right:0;width:12px;background-position:right;left:100%;margin-left:-9px;top:50%;margin-top:-10px}.top-center .amap-info-sharp-old{height:12px;margin:0 auto;width:20px;background-position:top;top:0;margin-top:-3px;left:50%;margin-left:-10px}.top-left .amap-info-sharp-old{height:12px;width:13px;background-position:-16px -3px;top:0;margin-top:-3px}.top-right .amap-info-sharp-old{height:12px;width:13px;background-position:-56px -3px;left:100%;margin-left:-13px;top:0;margin-top:-3px}.amap-info-sharp{position:absolute}.bottom-center .amap-info-sharp{bottom:0;left:50%;margin-left:-8px;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #fff}.bottom-center .amap-info-sharp:after{position:absolute;content:"";margin-left:-8px;margin-top:-7px;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid rgba(0,0,0,0.3);filter:blur(2px);z-index:-1}.amap-info-contentContainer:hover.bottom-center .amap-info-sharp:after{border-top:8px solid rgba(0,0,0,0.5)}.bottom-left .amap-info-sharp{border-color:transparent #fff;border-width:0 0 10px 10px;border-style:solid}.bottom-left .amap-info-sharp:after{position:absolute;content:"";margin-left:-10px;border-color:transparent rgba(0,0,0,0.3);border-width:0 0 10px 10px;border-style:solid;filter:blur(1px);z-index:-1}.amap-info-contentContainer:hover.bottom-left .amap-info-sharp:after{border-color:transparent rgba(0,0,0,0.5)}.bottom-left .amap-info-content{border-radius:2px 2px 2px 0}.bottom-right .amap-info-sharp{right:0;border-top:10px solid #fff;border-left:10px solid transparent}.bottom-right .amap-info-sharp:after{position:absolute;margin-top:-9px;margin-left:-10px;content:"";border-top:10px solid rgba(0,0,0,0.3);border-left:10px solid transparent;filter:blur(1px);z-index:-1}.amap-info-contentContainer:hover.bottom-right .amap-info-sharp:after{border-top:10px solid rgba(0,0,0,0.5)}.bottom-right .amap-info-content{border-radius:2px 2px 0 2px}.top-center .amap-info-sharp{top:0;left:50%;margin-left:-8px;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:8px solid #fff}.top-center .amap-info-sharp:after{position:absolute;content:"";margin-top:0;margin-left:-8px;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:8px solid rgba(0,0,0,0.3);filter:blur(1px);z-index:-1}.top-left .amap-info-sharp{left:0;top:0;border-bottom:10px solid #fff;border-right:10px solid transparent}.top-left .amap-info-sharp:after{position:absolute;content:"";margin-top:0;margin-left:0;border-bottom:10px solid rgba(0,0,0,0.3);border-right:10px solid transparent;filter:blur(1px);z-index:-1}.top-right .amap-info-sharp{right:0;top:0;border-bottom:10px solid #fff;border-left:10px solid transparent}.top-right .amap-info-sharp:after{position:absolute;content:"";margin-top:0;margin-left:-10px;border-bottom:10px solid rgba(0,0,0,0.3);border-left:10px solid transparent;filter:blur(1px);z-index:-1}.middle-right .amap-info-sharp{right:0;top:50%;margin-top:-8px;border-top:8px solid transparent;border-left:8px solid #fff;border-bottom:8px solid transparent}.middle-right .amap-info-sharp:after{position:absolute;content:"";margin-top:-8px;margin-left:-8px;border-top:8px solid transparent;border-left:8px solid rgba(0,0,0,0.3);border-bottom:8px solid transparent;filter:blur(1px);z-index:-1}.amap-info-contentContainer:hover.middle-right .amap-info-sharp:after{border-left:8px solid rgba(0,0,0,0.5)}.middle-left .amap-info-sharp{left:0;top:50%;margin-top:-8px;border-top:8px solid transparent;border-right:8px solid #fff;border-bottom:8px solid transparent}.middle-left .amap-info-sharp:after{position:absolute;content:"";margin-top:-8px;margin-left:0;border-top:8px solid transparent;border-right:8px solid rgba(0,0,0,0.3);border-bottom:8px solid transparent;filter:blur(1px);z-index:-1}.amap-info-contentContainer:hover.middle-left .amap-info-sharp:after{border-right:8px solid rgba(0,0,0,0.5)}.amap-info-contentContainer.top-left,.amap-info-contentContainer.top-center,.amap-info-contentContainer.top-right{padding-top:8px}.amap-info-contentContainer.bottom-left,.amap-info-contentContainer.bottom-center,.amap-info-contentContainer.bottom-right{padding-bottom:8px}.amap-info-contentContainer.middle-right{padding-right:8px}.amap-info-contentContainer.middle-left{padding-left:8px}.amap-menu-outer{margin:0;padding:0;list-style-type:none}ul.amap-menu-outer li{cursor:pointer;height:35px;line-height:35px;word-break:break-all;padding:0 10px;font-size:12px;white-space:nowrap}ul.amap-menu-outer li a{text-decoration:none;font-size:13px;margin:0 5px;color:#000;padding:5px 5px}ul.amap-menu-outer li:hover{background-color:#f3f3ee}.amap-overlay-text-container{display:block;width:auto;word-break:keep-all;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#fff;padding:2px 3px;border:1px solid #ccc;border-radius:3px}.amap-overlay-text-container.amap-overlay-text-empty{display:none}.amap-info-content-ie8{border:1px solid #9c9c9c}'.replace(/url\((['"]?)(?:\.\.\/)+/g, "url($1" +
            dc[2].split(",")[0] + "/"), hc = null, ic = 0, jc = fc.childNodes.length; ic < jc; ic++)
        if (1 === fc.childNodes[ic].nodeType) { hc = fc.childNodes[ic]; break }
    if (gc)
        if (fc) {
            var kc = document.createElement("style");
            kc.setAttribute("type", "text/css");
            kc.setAttribute("class", "AMap.style");
            kc.styleSheet ? kc.styleSheet.cssText = gc : kc.innerHTML = gc;
            hc ? fc.insertBefore(kc, hc) : fc.appendChild(kc)
        } else document.write("<style type='text/css'>" + gc + "</style>");
    var g = g || { Ea: { xe: 0, xq: [], sj: {} } },
        A = { o: {}, control: {}, w: {} };
    g.NBa = function(a) { var b = Function; return function() { return (new b("return " + a))() } }();
    g.CLASS_NAME = "AMap";
    g.c = g.BuryPoint = {};
    g.c.add = g.BuryPoint.add = function(a, b, c) { a.c4 || a.C || !(a = a.CLASS_NAME) || (a = a.replace("AMap.", ""), g.Pz.Io(a, b, c)) };
    var lc = { lang: 1, baseRender: 1, overlayRender: 1, viewMode: 1 };
    g.c.ya = g.BuryPoint.addOptions = function(a, b) {
        if (!a.fta)
            if (b && (b.innerLayer || b.innerOverlay)) a.c4 = !0;
            else {
                a.fta = !0;
                var c = a.CLASS_NAME;
                if (c) {
                    c = c.replace("AMap.", "");
                    g.Pz.Io(c);
                    b = b || {};
                    for (var d in b) b.hasOwnProperty(d) && ("Map" === c && d in lc ? g.Pz.Io(c, d, b[d]) : g.Pz.Io(c, d))
                }
            }
    };
    g.aa = function() {};
    g.aa.extend = g.aa.extend = function(a) {
        function b() {}

        function c() {
            var a = this.initialize || this.r;
            a && a.apply(this, arguments);
            if (!d && this.wi) {
                a = document.createElement("style");
                a.setAttribute("type", "text/css");
                this.CLASS_NAME && a.setAttribute("class", this.CLASS_NAME);
                this.wi = this.wi.replace(/url\((['"]?)(?:\.\.\/)*/g, "url($1" + g.A.yb + "/");
                a.styleSheet ? a.styleSheet.cssText = this.wi : a.innerHTML = this.wi;
                for (var b = document.head || document.getElementsByTagName("head")[0], c = null, e = 0, f = b.childNodes.length; e < f; e++)
                    if (1 ===
                        b.childNodes[e].nodeType) { c = b.childNodes[e]; break }
                c ? b.insertBefore(a, c) : b.appendChild(a)
            }
            d = !0
        }
        var d = !1;
        b.prototype = this.prototype;
        var e = new b;
        e.constructor = c;
        c.prototype = e;
        c.prototype.ph = c.prototype["super"] = function(a) { return a.callee.ka.apply(this, a) };
        for (var f in this) this.hasOwnProperty(f) && "prototype" !== f && (c[f] = this[f]);
        a.O7 && (g.extend(c, a.O7), a.O7 = null);
        a.ja && (g.extend.apply(null, [e].concat(a.ja)), a.ja = null);
        a.B && e.B && (a.B = g.extend({}, e.B, a.B));
        var h = e.constructor.Dqa,
            k = {};
        if (void 0 !== h)
            for (f in h) h.hasOwnProperty(f) &&
                (k[h[f]] = f);
        for (f in a)
            if (Object.prototype.hasOwnProperty.call(a, f)) {
                var l = f,
                    m = f;
                h && k[f] && (m = k[f]);
                "function" === typeof a[l] && "function" === typeof e[m] && (a[l].ka = e[m])
            }
        g.extend(e, a);
        a.toString && (e.toString = a.toString);
        c.Tc = this.prototype;
        return c
    };
    g.aa.zb = g.aa.include = function(a) { g.extend(this.prototype, a) };
    g.extend = function(a) {
        var b = Array.prototype.slice.call(arguments, 1),
            c, d, e, f;
        d = 0;
        for (e = b.length; d < e; d += 1)
            if (f = b[d] || {}, Object.assign) Object.assign(a, f);
            else
                for (c in f) Object.prototype.hasOwnProperty.call(f, c) && (a[c] = f[c]);
        return a
    };
    g.aa.Mb = function(a) {
        for (var b in a)
            if (a.hasOwnProperty(b)) {
                var c = a[b];
                if ("string" === typeof c) this.prototype[b] && (this.prototype[c] = this.prototype[b]);
                else
                    for (var d = 0, e = c.length; d < e; d++) this.prototype[b] && (this.prototype[c[d]] = this.prototype[b])
            }
    };
    g.Pz = {
        sj: {},
        getKey: function(a, b) { a = a || ""; return void 0 !== b && a ? a + "@" + b : a },
        Io: function(a, b, c) {
            this.sj[a] || (this.sj[a] = {});
            b = this.getKey(b, c);
            void 0 == this.sj[a][b] && (this.sj[a][b] = 0)
        },
        send: function() {
            var a = [],
                b;
            for (b in this.sj)
                if (this.sj.hasOwnProperty(b)) {
                    var c = this.sj[b],
                        d = [],
                        e;
                    for (e in c) c.hasOwnProperty(e) && 0 == c[e] && (d.push(e), c[e] = 1);
                    d.length && a.push(b + "~" + d.join(","))
                }
            a.length && (a = ["type=nfl", "k=" + g.A.key, "m=" + (g.l.Z ? 1 : 0), "pf=" + g.l.Qy, "v=" + g.A.cr, "branch=JSAPI", "log=" + a.join("!")], a = g.A.Bc + "://webapi.amap.com/count?" +
                a.join("&"), new g.fb.vb(a))
        }
    };
    setInterval(function() { g.Pz.send() }, 1E4);
    g.sa = {
        g: function(a, b, c, d, e) {
            if (this.fe(a, b, c || this)) return this;
            var f = this.$e = this.$e || {};
            f[a] = f[a] || [];
            e ? f[a].unshift({ tb: b, Re: c || this, oj: d }) : f[a].push({ tb: b, Re: c || this, oj: d });
            return this
        },
        fe: function(a, b, c) {
            var d = this.$e;
            if (b && c) {
                if (d && a in d && d[a])
                    for (var e = 0; e < d[a].length; e += 1)
                        if (d[a][e].tb === b && d[a][e].Re === c) return !0;
                return !1
            }
            return d && a in d && d[a] && 0 < d[a].length
        },
        G: function(a, b, c) {
            if (!this.fe(a)) return this;
            var d = this.$e;
            if (d && d[a])
                for (var e = 0; e < d[a].length; e += 1)
                    if (!(d[a][e].tb !== b && "mv" !==
                            b || c && d[a][e].Re !== c)) {
                        d[a].splice(e, 1);
                        d[a].length || (d[a] = null);
                        break
                    }
            return this
        },
        hJ: function(a, b) {
            if (!this.fe(a)) return this;
            var c = this.$e;
            if (c && c[a])
                for (var d = 0; d < c[a].length; d += 1)
                    if (!b || c[a][d].Re === b) {
                        c[a].splice(d, 1);
                        c[a].length || (c[a] = null);
                        break
                    }
            return this
        },
        q: function(a, b) {
            if (!this.fe(a)) return this;
            var c = { type: a };
            void 0 !== b && (b instanceof Array ? (c = b.slice(0), c.type = a) : "string" === typeof b || "number" === typeof b || "boolean" === typeof b ? c.value = b : g.a.JI(b) ? c.value = b : c = g.extend(c, b));
            for (var d = [].concat(this.$e[a]), e = 0; e < d.length; e += 1) d[e].tb && (d[e].tb.call(d[e].Re || this, c), d[e] && d[e].oj && this.$e[a] && this.$e[a].splice(e, 1));
            return this
        },
        hi: function(a) { a ? this.$e && this.$e[a] && (this.$e[a] = null) : this.$e = null; return this }
    };
    g.sa.on || (g.sa.on = g.sa.g);
    g.sa.off || (g.sa.off = g.sa.G);
    g.sa.emit || (g.sa.emit = g.sa.q);
    g.Pe = {
        set: function(a, b, c) {
            var d = this.ml;
            if (d && d[a]) {
                var d = d[a],
                    e = "set" + this.n3(a);
                if (d[e]) {
                    var f = !1;
                    !0 == d.C ? f = !0 : d.C = !0;
                    d[e](b, c);
                    f || (d.C = !1);
                    c || this.CJ(a, b)
                } else d.set(a, b, c)
            } else(this.He = this.He || {})[a] = b, c || this.CJ(a, b)
        },
        n3: function() { var a = {}; return function(b) { a[b] || (a[b] = b[0].toUpperCase() + b.substr(1)); return a[b] } }(),
        get: function(a, b, c) {
            var d, e = this.ml;
            d = "get" + this.n3(a);
            if (e && e[a]) return c = e[a], c[d] ? (a = !1, !0 == c.C ? a = !0 : c.C = !0, b = c[d](b), a || (c.C = !1), b) : c.get(a, b);
            if (!c && this[d]) return a = !1, !0 ==
                this.C ? a = !0 : this.C = !0, b = this[d](b), a || (this.C = !1), b;
            if (this.He && this.He.hasOwnProperty(a)) return this.He[a]
        },
        W: function(a, b, c) {
            this.ml || (this.ml = {});
            this.ml[a] !== b && (b.g(a, function(b) { this.CJ(a, b) }, this), this.ml[a] = b, c || this.CJ(a))
        },
        Qe: function(a, b, c) { for (var d = 0; d < a.length; d += 1) this.W(a[d], b, !c) },
        el: function(a) { this.ml && this.ml[a] && (this.ml[a].G(a, "mv", this), this.ml[a] = void 0) },
        fl: function() {
            if (this.ml)
                for (var a in this.ml) this.ml.hasOwnProperty(a) && this.el(a)
        },
        CJ: function(a, b) {
            var c = a + "Changed";
            if (this[c]) this[c](b);
            this.q(a, b)
        },
        rDa: function(a, b, c) {
            var d = new(g.aa.extend({ ja: [g.sa, g.Pe] }));
            d.aP = function() {
                for (var b = !0, e = 0; e < a.length; e += 1) d.get(a[e]) || (b = !1);
                b && (d.fl(), c())
            };
            for (var e = 0; e < a.length; e += 1) d.W(a[e], b)
        },
        We: function(a, b) { var c, d; for (c in a) a.hasOwnProperty(c) && (d = a[c], this.set(c, d, b)) }
    };
    g.A = {
        localStorage: !0,
        ZG: 500,
        le: !0,
        pe: { dark: "#202020", blue_night: "#090d20", test: "#033447", mapv: "#000001", techblue: "#000b11", insight: "#19212a", "default": "#fcf9f2" },
        YDa: "dark light blue darkblue fresh grey midblue".split(" "),
        key: "df2d1175d0b6a0b2823a17b241e29e59",
        Bc: "http",
        Ud: [115.423412, 39.442759, 117.514625, 41.060816, 116.405285, 39.904989],
        Rd: "http://restapi.amap.com",
        yb: "http://webapi.amap.com",
        sJ: "http://gaode.com",
        Yu: "http://m.amap.com",
        ZC: "http://webrd0{1,2,3,4}.is.autonavi.com/appmaptile?lang=[lang]&size=1&scale=1&style=8&x=[x]&y=[y]&z=[z]",
        WI: "http://wprd0{1,2,3,4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x=[x]&y=[y]&z=[z]&scl=1&ltype=3",
        rT: "http://webst0{1,2,3,4}.is.autonavi.com/appmaptile?style=6&x=[x]&y=[y]&z=[z]",
        QJ: "http://webst0{1,2,3,4}.is.autonavi.com/appmaptile?x=[x]&y=[y]&z=[z]&lang=zh_cn&size=1&scale=1&style=8",
        RJ: "http://wprd0{1,2,3,4}.is.autonavi.com/appmaptile?x=[x]&y=[y]&z=[z]&lang=zh_cn&size=1&scl=1&style=8&ltype=11",
        cE: "http://wprd0{1,2,3,4}.is.autonavi.com/appmaptile?lang=[lang]&size=1&style=7&x=[x]&y=[y]&z=[z]",
        BK: "http://vector.amap.com",
        zK: "vdata.amap.com",
        lya: "ws"
    };

    function mc(a) {
        g.aa.iu = a.iu;
        g.l = a.l;
        g.bJ = a.bJ;
        g.Sta = a[7];
        a.l = null;
        g.A.yb = a[2].split(",")[0];
        g.A.vj = a.vj;
        g.A.YC = a.YC;
        var b = g.A.Bc = g.A.yb.split(":")[0];
        "https" === b && (g.A.lya = "wss", g.A.Rd = g.A.Rd.replace("http", "https"), g.A.ZC = g.A.ZC.replace("http", "https"), g.A.WI = g.A.WI.replace("http", "https"), g.A.rT = g.A.rT.replace("http", "https"), g.A.QJ = g.A.QJ.replace("http", "https"), g.A.RJ = g.A.RJ.replace("http", "https"), g.A.cE = g.A.cE.replace("http", "https"), g.A.BK = g.A.BK.replace("http", "https"));
        var c = window.location.href;
        0 !== c.indexOf("http") && window.parent && window.parent !== window && (c = window.parent.location.href);
        g.A.SBa = c;
        c = encodeURIComponent(c);
        g.A.Qt = c;
        g.A.ri = g.A.yb + "/theme/v1.3/markers/" + (g.l.Mc ? "b" : "n");
        var d = document.createElement("style");
        d.type = "text/css";
        g.A.Rma = "url(" + b + "://webapi.amap.com/theme/v1.3/openhand.cur),default";
        var e = ".amap-container{cursor:" + g.A.Rma + ";}.amap-drag{cursor:url(" + b + "://webapi.amap.com/theme/v1.3/closedhand.cur),default;}";
        d.styleSheet ? (b = function() { try { d.styleSheet.cssText = e } catch (a) {} },
            d.styleSheet.disabled ? setTimeout(b, 10) : b()) : d.appendChild(document.createTextNode(e));
        (document.head || document.getElementsByTagName("head")[0]).appendChild(d);
        g.A.mode = Number(a[3]);
        g.A.Ud = a[1];
        g.A.key = a[0];
        g.A.cr = a[4];
        g.A.Gc = a[5];
        g.A.ika = a[6]
    }
    window.AMap && window.AMap.xK && window.AMap.xK.uL && window.AMap.xK.uL(mc);
    g.om = { gu: Math.PI / 180, lua: 180 / Math.PI, PP: 6378137 };
    (function() {
        function a(a) { return "undefined" === typeof a ? "" : a }
        g.Qh = {
            qpa: function(b) {
                b.name = a(b.name);
                var c = [b.y, b.x, b.name];
                if (g.l.Z) {
                    var d = [g.A.Yu + "/callAPP?", "src=jsapi_q"];
                    d.push("&ios=" + encodeURIComponent("viewMap?sourceApplication=jsapi_q&dev=0&poiname=" + b.name + "&lat=" + b.y + "&lon=" + b.x));
                    d.push("&android=" + encodeURIComponent("androidamap?action=shorturl&q=" + c.join(",") + "&sourceApplication=jsapi_q"));
                    d.push("&wp=" + encodeURIComponent("viewMap?sourceApplication=jsapi_q&dev=0&poiname=" + b.name + "&lat=" +
                        b.y + "&lon=" + b.x));
                    d.push("&mo=" + encodeURIComponent(g.A.Yu + "?q=" + c.join(",") + "&callapp=0&sourceApplication=jsapi_q"));
                    return d.join("")
                }
                return g.A.sJ + "?q=" + c.join(",") + "&src=jsapi_q"
            },
            a3: function(b) {
                b.name = a(b.name);
                b.address = a(b.address);
                b.x = a(b.x);
                b.y = a(b.y);
                var c = [b.id, b.y, b.x, b.name, b.address];
                if (g.l.Z) {
                    var d = [g.A.Yu + "/callAPP?", "src=jsapi_p"];
                    d.push("&ios=" + encodeURIComponent("multiPointShow?sourceApplication=jsapi_p&dev=0&q=" + [b.y, b.x, b.name, b.address, b.id].join() + "&title=" + b.name));
                    d.push("&android=" +
                        encodeURIComponent("androidamap?action=shorturl&p=" + c.join(",") + "&sourceApplication=jsapi_p"));
                    d.push("&wp=" + encodeURIComponent("multiPointShow?sourceApplication=jsapi_p&dev=0&q=" + [b.y, b.x, b.name, b.address, b.id].join() + "&title=" + b.name));
                    return d.join("")
                }
                return g.A.sJ + "?p=" + c.join(",") + "&src=jsapi_p"
            },
            Y2: function(b) {
                if (g.l.Z) {
                    var c = [g.A.Yu + "/callAPP?", "src=jsapi_detail"];
                    c.push("&ios=" + encodeURIComponent("viewPOIDetail?sourceApplication=jsapi_detail&poiid=" + b.id));
                    b.name = a(b.name);
                    b.x = a(b.x);
                    b.y =
                        a(b.y);
                    c.push("&android=" + encodeURIComponent("androidamap?action=openFeature&featureName=PoiDetail&poiid=" + b.id + "&poiname=" + b.name + "&x=" + b.x + "&y=" + b.y + "&sourceApplication=jsapi_detail"));
                    c.push("&wp=" + encodeURIComponent("viewPOIDetail?sourceApplication=jsapi_detail&poiid=" + b.id));
                    c.push("&mo=" + encodeURIComponent(g.A.Yu + "/detail/index/poiid=" + b.id + "&sourceApplication=jsapi_detail"));
                    return c.join("")
                }
                return g.A.sJ + "/detail/" + b.id + "?src=jsapi_detail"
            },
            LQ: function(b) {
                b.sname = a(b.sname);
                "" === b.sname &&
                    (b.sname = "\u8d77\u70b9");
                b.dname = a(b.dname);
                "" === b.dname && (b.dname = "\u7ec8\u70b9");
                b.mcount = a(b.mcount);
                b.my = a(b.my);
                b.mx = a(b.mx);
                b.mname = a(b.mname);
                var c = [b.sy, b.sx, b.sname, b.dy, b.dx, b.dname, b.m, b.t, b.mcount, b.my, b.mx, b.mname];
                if (g.l.Z) {
                    var d = [g.A.Yu + "/callAPP?", "src=jsapi_r_" + b.t];
                    d.push("&ios=" + encodeURIComponent("path?sourceApplication=jsapi_r_" + b.t + "&dev=0&slat=" + b.sy + "&slon=" + b.sx + "&sname=" + b.sname + "&dlat=" + b.dy + "&dlon=" + b.dx + "&dname=" + b.dname + "&m=" + b.m + "&t=" + b.t + "&vian=0&vialons=&vialats=&vianames="));
                    var e = b.t;
                    0 === b.t ? e = 2 : 2 === b.t && (e = 4);
                    d.push("&android=" + encodeURIComponent("androidamap://route?sourceApplication=jsapi_r_" + b.t + "&slat=" + b.sy + "&slon=" + b.sx + "&sname=" + b.sname + "&dlat=" + b.dy + "&dlon=" + b.dx + "&dname=" + b.dname + "&dev=0&" + b.m + "&t=" + e));
                    d.push("&wp=" + encodeURIComponent("path?sourceApplication=jsapi_r_" + b.t + "&dev=0&slat=" + b.sy + "&slon=" + b.sx + "&sname=" + b.sname + "&dlat=" + b.dy + "&dlon=" + b.dx + "&dname=" + b.dname + "&m=" + b.m + "&t=" + b.t + "&vian=0&vialons=&vialats=&vianames="));
                    d.push("&mo=" + encodeURIComponent(g.A.Yu +
                        "/?r=" + c.join(",") + "&callapp=0&sourceApplication=jsapi_r_" + b.t));
                    return d.join("")
                }
                return g.A.sJ + "?r=" + c.join(",") + "src=jsapi_r_" + b.t
            },
            Es: function(a) { g.l.Z ? window.location.href = a : window.open(a) }
        }
    })();
    "function" !== typeof Object.keys && (Object.keys = function(a) {
        var b = [],
            c;
        for (c in a) a.hasOwnProperty(c) && b.push(c);
        return b
    });
    g.a = {
        CLASS_NAME: "AMap.Util",
        gK: [],
        Da: 268435456,
        Ao: [215440491, 106744817],
        T8: function() {
            var a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split("");
            return function(b, c) {
                var d = [],
                    e;
                c = c || a.length;
                if (b)
                    for (e = 0; e < b; e++) d[e] = a[0 | Math.random() * c];
                else {
                    var f;
                    d[8] = d[13] = d[18] = d[23] = "-";
                    d[14] = "4";
                    for (e = 0; 36 > e; e++) d[e] || (f = 0 | 16 * Math.random(), d[e] = a[19 === e ? f & 3 | 8 : f])
                }
                return d.join("")
            }
        }(),
        xC: {
            start: function(a) {
                a.startTime = new Date;
                a.Cs = [];
                var b = (new Date).getTime();
                a.id = requestAnimationFrame(function d() {
                    var e =
                        (new Date).getTime();
                    a.Cs.push(e - b);
                    b = e;
                    a.id = requestAnimationFrame(d)
                })
            },
            cancel: function(a) { a.id && cancelAnimationFrame(a.id) },
            stop: function(a) {
                a.yma = new Date - a.startTime;
                this.cancel(a);
                a.xC = Math.round(1E3 / (a.yma / (a.Cs.length + 1)))
            }
        },
        j3: function(a, b, c) {
            var d = 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : !1;
            if (a === b) return b;
            switch (3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : "linear") {
                case "ease":
                    c = g.Yv.IH(0.25, 0.1, 0.25, 1)(c);
                    break;
                case "ease-in":
                    c = g.Yv.IH(0.42, 0, 1, 1)(c);
                    break;
                case "ease-out":
                    c =
                        g.Yv.IH(0, 0, 0.58, 1)(c);
                    break;
                case "ease-in-out":
                    c = g.Yv.IH(0.42, 0, 0.58, 1)(c)
            }
            var e = a + (b - a) * c;
            d && (e >>= 0);
            return e
        },
        createObjectURL: function(a) {
            var b = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : "text/javascript; charset=utf-8",
                c = null;
            try { c = (window.URL || window.webkitURL).createObjectURL(new Blob([a], { type: b })) } catch (d) { c = null }
            return c
        },
        revokeObjectURL: function(a) {
            (window.URL || window.webkitURL).revokeObjectURL(a)
        },
        JAa: function(a) { for (var b = {}, c = 0, d = a.length; c < d; c++) b[a[c]] = c; return b },
        BC: function(a) {
            var b = {};
            if (g.a.Uj(a, "object"))
                for (var c in a) a.hasOwnProperty(c) && (b[a[c]] = c);
            return b
        },
        Uf: function(a, b) { for (var c = 0, d = b.length; c < d; c += 1) a.push(b[c]) },
        create: "function" === typeof Object.create ? Object.create : function(a, b) {
            function c() {}
            c.prototype = a;
            var d = new c,
                e;
            for (e in b) b.hasOwnProperty(e) && (d[e] = b[e]);
            return d
        },
        jb: function(a) {
            if ("object" === typeof a && null !== a) {
                if (a.z5 || this.Uj(a, "Float32Array") || this.Uj(a, "Uint16Array")) return a;
                var b = this.isArray(a) ? [] : {},
                    c;
                for (c in a) a.hasOwnProperty(c) && (b[c] = g.a.jb(a[c]));
                return b
            }
            return a
        },
        o4: function(a) { return (a | 0) === a },
        Mva: "function" === typeof Object.setPrototypeOf ? Object.setPrototypeOf : function(a, b) { for (var c in b) a[c] = b[c] },
        Eh: function(a) { return "function" === typeof a },
        Cka: function(a) {
            var b = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : "webgl";
            if (!a) return a;
            for (var c = [], d = 0, e = a.length; d < e; d += 2) {
                var f = parseInt(a.substr(d, 2), 16);
                if ("webgl" === b || "rgba" === b && 0 === d) f = this.lc(f / 255, 3);
                c.push(f)
            }
            c.push(c.shift());
            return c
        },
        is: function() {},
        keys: "function" === typeof Object.keys ?
            Object.keys : function(a) {
                var b = [],
                    c;
                for (c in a) a.hasOwnProperty(c) && b.push(c);
                return b
            },
        map: function(a, b) {
            var c = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null,
                d = [];
            if (a && a.length) g.a.Qb(a, function() {
                for (var e = arguments.length, f = Array(e), h = 0; h < e; h++) f[h] = arguments[h];
                d[f[1]] = b.apply(c || a, f)
            });
            else return a;
            return d
        },
        forEach: function(a, b) { if (a && a.length) { var c = a.length; if (0 < c && (b(a[0], 0), 1 < c)) { b(a[1], 1); for (var d = 2; d < c; d++) b(a[d], d) } } },
        Qb: function(a, b) {
            var c = 2 < arguments.length && void 0 !==
                arguments[2] ? arguments[2] : null;
            if (a && a.length)
                for (var d = 0, e = a.length; d < e && !1 !== b.call(c, a[d], d, a); d++);
        },
        find: function(a, b) {
            for (var c = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null, d = 0, e = a.length; d < e; d++)
                if ("function" === typeof b) { if (b.call(c, a[d], d, a)) return a[d] } else if (a[d] === b) return a[d];
            return null
        },
        JI: function(a) { return "object" === typeof HTMLElement ? a instanceof HTMLElement : a && "object" === typeof a && 1 === a.nodeType && "string" === typeof a.nodeName },
        Lv: function(a, b) {
            var c = "ASDFGHJKLQWERTYUIO!sdfghjkleiu3~yr5-P&mq9`%zCN*b=8@^xpVM",
                d, e;
            "v5" < (b || "v5") ? (d = c.length, e = 512) : (d = 27, c = c.substr(0, 27), e = 333);
            var f, h, k, l, m;
            h = [];
            k = NaN;
            l = 0;
            for (m = a.length; l < m; l++) f = a[l], f = c.indexOf(f), isNaN(k) ? k = f * d : (h.push(k + f - e), k = NaN);
            return h
        },
        vva: function(a, b) {
            for (var c = 1, c = 512 < b.length ? Math.round(Math.pow(b.length, 0.5)) : b.length, d = Math.ceil(b.length / c), e = 0; e < d; e += 1) {
                var f = c * e,
                    h = f + c;
                h > b.length && (h = b.length);
                for (; f < h; f += 1) a(b[f])
            }
        },
        hBa: function(a) {
            if (/^rgba\(/.test(a)) return this.nv(a);
            var b = a = this.rH(a);
            "#" === a[0] && (a = a.substring(1), 3 === a.length && (a =
                a.replace(/./g, function(a) { return a + a })), b = this.gr(8 === a.length ? a : "ff" + a));
            return this.nv(b)
        },
        rH: function() {
            var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : "",
                a = a.toLowerCase(),
                b = {
                    aliceblue: "#f0f8ff",
                    antiquewhite: "#faebd7",
                    aqua: "#00ffff",
                    aquamarine: "#7fffd4",
                    azure: "#f0ffff",
                    beige: "#f5f5dc",
                    bisque: "#ffe4c4",
                    black: "#000000",
                    blanchedalmond: "#ffebcd",
                    blue: "#0000ff",
                    blueviolet: "#8a2be2",
                    brown: "#a52a2a",
                    burlywood: "#deb887",
                    cadetblue: "#5f9ea0",
                    chartreuse: "#7fff00",
                    chocolate: "#d2691e",
                    coral: "#ff7f50",
                    cornflowerblue: "#6495ed",
                    cornsilk: "#fff8dc",
                    crimson: "#dc143c",
                    cyan: "#00ffff",
                    darkblue: "#00008b",
                    darkcyan: "#008b8b",
                    darkgoldenrod: "#b8860b",
                    darkgray: "#a9a9a9",
                    darkgreen: "#006400",
                    darkkhaki: "#bdb76b",
                    darkmagenta: "#8b008b",
                    darkolivegreen: "#556b2f",
                    darkorange: "#ff8c00",
                    darkorchid: "#9932cc",
                    darkred: "#8b0000",
                    darksalmon: "#e9967a",
                    darkseagreen: "#8fbc8f",
                    darkslateblue: "#483d8b",
                    darkslategray: "#2f4f4f",
                    darkturquoise: "#00ced1",
                    darkviolet: "#9400d3",
                    deeppink: "#ff1493",
                    deepskyblue: "#00bfff",
                    dimgray: "#696969",
                    dodgerblue: "#1e90ff",
                    firebrick: "#b22222",
                    floralwhite: "#fffaf0",
                    forestgreen: "#228b22",
                    fuchsia: "#ff00ff",
                    gainsboro: "#dcdcdc",
                    ghostwhite: "#f8f8ff",
                    gold: "#ffd700",
                    goldenrod: "#daa520",
                    gray: "#808080",
                    green: "#008000",
                    greenyellow: "#adff2f",
                    honeydew: "#f0fff0",
                    hotpink: "#ff69b4",
                    indianred: "#cd5c5c",
                    indigo: "#4b0082",
                    ivory: "#fffff0",
                    khaki: "#f0e68c",
                    lavender: "#e6e6fa",
                    lavenderblush: "#fff0f5",
                    lawngreen: "#7cfc00",
                    lemonchiffon: "#fffacd",
                    lightblue: "#add8e6",
                    lightcoral: "#f08080",
                    lightcyan: "#e0ffff",
                    lightgoldenrodyellow: "#fafad2",
                    lightgrey: "#d3d3d3",
                    lightgreen: "#90ee90",
                    lightpink: "#ffb6c1",
                    lightsalmon: "#ffa07a",
                    lightseagreen: "#20b2aa",
                    lightskyblue: "#87cefa",
                    lightslategray: "#778899",
                    lightsteelblue: "#b0c4de",
                    lightyellow: "#ffffe0",
                    lime: "#00ff00",
                    limegreen: "#32cd32",
                    linen: "#faf0e6",
                    magenta: "#ff00ff",
                    maroon: "#800000",
                    mediumaquamarine: "#66cdaa",
                    mediumblue: "#0000cd",
                    mediumorchid: "#ba55d3",
                    mediumpurple: "#9370d8",
                    mediumseagreen: "#3cb371",
                    mediumslateblue: "#7b68ee",
                    mediumspringgreen: "#00fa9a",
                    mediumturquoise: "#48d1cc",
                    mediumvioletred: "#c71585",
                    midnightblue: "#191970",
                    mintcream: "#f5fffa",
                    mistyrose: "#ffe4e1",
                    moccasin: "#ffe4b5",
                    navajowhite: "#ffdead",
                    navy: "#000080",
                    oldlace: "#fdf5e6",
                    olive: "#808000",
                    olivedrab: "#6b8e23",
                    orange: "#ffa500",
                    orangered: "#ff4500",
                    orchid: "#da70d6",
                    palegoldenrod: "#eee8aa",
                    palegreen: "#98fb98",
                    paleturquoise: "#afeeee",
                    palevioletred: "#d87093",
                    papayawhip: "#ffefd5",
                    peachpuff: "#ffdab9",
                    peru: "#cd853f",
                    pink: "#ffc0cb",
                    plum: "#dda0dd",
                    powderblue: "#b0e0e6",
                    purple: "#800080",
                    rebeccapurple: "#663399",
                    red: "#ff0000",
                    rosybrown: "#bc8f8f",
                    royalblue: "#4169e1",
                    saddlebrown: "#8b4513",
                    salmon: "#fa8072",
                    sandybrown: "#f4a460",
                    seagreen: "#2e8b57",
                    seashell: "#fff5ee",
                    sienna: "#a0522d",
                    silver: "#c0c0c0",
                    skyblue: "#87ceeb",
                    slateblue: "#6a5acd",
                    slategray: "#708090",
                    snow: "#fffafa",
                    springgreen: "#00ff7f",
                    steelblue: "#4682b4",
                    tan: "#d2b48c",
                    teal: "#008080",
                    thistle: "#d8bfd8",
                    tomato: "#ff6347",
                    turquoise: "#40e0d0",
                    violet: "#ee82ee",
                    wheat: "#f5deb3",
                    white: "#ffffff",
                    whitesmoke: "#f5f5f5",
                    yellow: "#ffff00",
                    yellowgreen: "#9acd32"
                };
            return "string" === typeof a ? b[a.toLowerCase()] ?
                b[a.toLowerCase()] : a : a
        },
        JH: function(a, b, c) {
            var d, e;
            d = Math.floor(c / 2);
            e = c - d;
            d = (1 << d) - 1 << e;
            e = (1 << e) - 1;
            return [c, a & d | b & e, b & d | a & e]
        },
        KH: function(a) { return a ? encodeURIComponent(a) : "" },
        Dd: function(a, b, c, d) {
            c = a[b].i[c];
            if ("undefined" === typeof c) return null;
            a = a[b].s;
            if ("number" === typeof c) return a[c];
            for (;
                "undefined" === typeof c[d.toString()] && !(d -= 1, 3 > d););
            d = c[d.toString()];
            return "number" === typeof d ? a[d] : null
        },
        nv: function(a) {
            a = a.split(",");
            a[0] = parseFloat(a[0].split("rgba(")[1]) / 255;
            a[1] = parseFloat(a[1]) / 255;
            a[2] = parseFloat(a[2]) / 255;
            a[3] = parseFloat(a[3]);
            return a
        },
        hva: function(a) {
            a = a.split(",");
            a[0] = parseFloat(a[0].split("rgb(")[1]) / 255;
            a[1] = parseFloat(a[1]) / 255;
            a[2] = parseFloat(a[2]) / 255;
            return a
        },
        mT: function(a) { return "rgba(" + 255 * a[0] + "," + 255 * a[1] + "," + 255 * a[2] + "," + a[3] + ")" },
        fma: function(a) { return this.mT(this.Rm(a)) },
        Rm: function(a) {
            if (a instanceof Array) return 3 == a.length && a.push(1), a;
            a = this.rH(a);
            if (0 == a.indexOf("#")) {
                if (4 === a.length) return a = a.substr(1).replace(/./g, function(a) { return a + a }), this.us(a);
                if (7 == a.length) return this.us(a.substr(1));
                if (9 == a.length) return a = a.substr(1), this.Ek(a.substr(6) + a.substr(0, 6))
            } else { if (0 == a.indexOf("rgb(")) return a = this.hva(a), a.push(1), a; if (0 == a.indexOf("rgba(")) return this.nv(a) }
        },
        Y6: function(a) { return g.a.gr("ff" + a) },
        gr: function(a) {
            for (var b = [], c = 0, d = a.length; c < d; c += 2) b.push(parseInt(a.substr(c, 2), 16));
            b.push((b.shift() / 255).toFixed(2));
            return "rgba(" + b.join(",") + ")"
        },
        us: function(a) { return g.a.Ek("ff" + a) },
        Ek: function(a) {
            for (var b = [], c = 0, d = a.length; c < d; c += 2) b.push(parseInt(a.substr(c,
                2), 16) / 255);
            b.push(b.shift());
            return b
        },
        Pk: function(a) {
            for (var b in a)
                if (a.hasOwnProperty(b)) return !1;
            return !0
        },
        ao: function(a, b) { 0 <= b && a.splice(b, 1); return a },
        iwa: function(a, b) { return a.startsWith ? a.startsWith(b) : a.substr(0, b.length) === b },
        Nx: function(a, b) { var c = g.a.indexOf(a, b); return g.a.ao(a, c) },
        filter: function(a, b, c) {
            var d = [];
            g.a.Qb(a, function(a, f) { b.call(c, a, f) && d.push(a) });
            return d
        },
        indexOf: function(a, b) {
            if (!a || !a.length) return -1;
            if (a.indexOf) return a.indexOf(b);
            for (var c = 0; c < a.length; c += 1)
                if (a[c] ===
                    b) return c;
            return -1
        },
        sC: function(a, b) { return a.endsWith ? a.endsWith(b) : a.length < b.length ? !1 : a.substr(a.length - b.length) == b ? !0 : !1 },
        bind: function() {
            var a = !1;
            Function.prototype.bind && (a = !0);
            return function(b, c) { var d = 2 < arguments.length ? Array.prototype.slice.call(arguments, 2) : null; return a ? d ? (d.unshift(c), b.bind.apply(b, d)) : b.bind(c) : function() { return b.apply(c, d || arguments) } }
        }(),
        Db: function(a, b) {
            b = b || {};
            a.B = g.extend({}, a.B, b);
            return a.B
        },
        Yla: function(a, b, c) {
            return "function" == typeof b ? this.HO(a, !0, this.Xka(b,
                c, 1)) : this.HO(a, !0)
        },
        HO: function(a, b, c, d, e, f, h) {
            var k;
            c && (k = e ? c(a, d, e) : c(a));
            if (void 0 !== k) return k;
            if (!this.t4(a)) return a;
            if (d = this.isArray(a)) { if (k = this.vqa(a), !b) return this.Eka(a, k) } else {
                var l = Object.prototype.toString.call(a),
                    m = "[object Function]" == l;
                if ("[object Object]" == l || "[object Arguments]" == l || m && !e) { if (k = this.wqa(m ? {} : a), !b) return this.Nka(k, a) } else return e ? a : {}
            }
            f || (f = []);
            h || (h = []);
            for (e = f.length; e--;)
                if (f[e] == a) return h[e];
            f.push(a);
            h.push(k);
            (d ? this.Fka : this.Ska)(a, function(d, e) {
                k[e] =
                    g.a.HO(d, b, c, e, a, f, h)
            });
            return k
        },
        Nka: function(a, b) { return null == b ? a : this.Qka(b, Object.keys(b), a) },
        t4: function(a) { var b = typeof a; return !!a && ("object" == b || "function" == b) },
        kDa: function(a) { return !!a && "object" == typeof a },
        iDa: function(a) { return "number" == typeof a && -1 < a && 0 == a % 1 && 9007199254740991 >= a },
        vqa: function(a) {
            var b = a.length,
                c = new a.constructor(b);
            b && "string" == typeof a[0] && Object.hasOwnProperty.call(a, "index") && (c.index = a.index, c.input = a.input);
            return c
        },
        Eka: function(a, b) {
            var c = -1,
                d = a.length;
            for (b ||
                (b = Array(d)); ++c < d;) b[c] = a[c];
            return b
        },
        wqa: function(a) { a = a.constructor; "function" == typeof a && a instanceof a || (a = Object); return new a },
        Xka: function(a, b, c) {
            if ("function" != typeof a) return this.Hu;
            if (void 0 === b) return a;
            switch (c) {
                case 1:
                    return function(c) { return a.call(b, c) };
                case 3:
                    return function(c, e, f) { return a.call(b, c, e, f) };
                case 4:
                    return function(c, e, f, h) { return a.call(b, c, e, f, h) };
                case 5:
                    return function(c, e, f, h, k) { return a.call(b, c, e, f, h, k) }
            }
            return function() { return a.apply(b, arguments) }
        },
        Fka: function(a,
            b) { for (var c = -1, d = a.length; ++c < d && !1 !== b(a[c], c, a);); return a },
        Hu: function(a) { return a },
        zma: function(a) {
            return function(b, c, d) {
                var e = g.a.Kwa(b);
                d = d(b);
                for (var f = d.length, h = a ? f : -1; a ? h-- : ++h < f;) { var k = d[h]; if (!1 === c(e[k], k, e)) break }
                return b
            }
        },
        Ska: function(a, b) { return g.a.zma()(a, b, Object.keys) },
        Kwa: function(a) { return g.a.t4(a) ? a : Object(a) },
        Qka: function(a, b, c) {
            c || (c = {});
            for (var d = -1, e = b.length; ++d < e;) {
                var f = b[d];
                c[f] = a[f]
            }
            return c
        },
        l2: function() { return !1 },
        join: function(a, b) {
            if (a.join) return a.join(b);
            var c = [],
                d;
            for (d in a) a.hasOwnProperty(d) && c.push(d + "=" + (a[d] || ""));
            return c.join(b)
        },
        O2: function(a, b) { return (a || "") + Math.round(Math.random() * Math.pow(10, b || 6)) },
        ub: function() { var a = 0; return function(b) { b._amap_id || (a += 1, b._amap_id = a); return b._amap_id } }(),
        Kna: "",
        vf: Date.now ? function() { return Date.now() } : function() { return (new Date).getTime() },
        zy: function(a, b, c, d) {
            var e;
            if (d) {
                var f = 0,
                    h, k = this.vf;
                e = function() {
                    h = k();
                    if (h - f < b) return !1;
                    f = h;
                    a.apply(c,
                        arguments)
                }
            } else {
                var l, m, n;
                n = function() {
                    l = !1;
                    m && (e.apply(c, m), m = !1)
                };
                e = function() { l ? m = arguments : (l = !0, a.apply(c, arguments), setTimeout(n, b)) }
            }
            return e
        },
        lc: function(a, b) { return a === a << 0 ? a : +parseFloat(a).toFixed(b || 0) },
        isArray: Array.isArray ? Array.isArray : function(a) { return this.Uj(a, "array") },
        Uj: function(a, b) { return Object.prototype.toString.call(a).split(" ")[1].slice(0, -1).toLowerCase() === b.toLowerCase() },
        ja: "function" === typeof Array.prototype.ja ? function(a, b) { return a.ja(b) } : function(a, b) {
            return -1 !==
                this.indexOf(a, b)
        },
        S7: function(a) { var b = 0; if (0 === a.length) return b; for (var c, d = 0, e = a.length; d < e; d += 1) c = a.charCodeAt(d), b = (b << 5) - b + c, b &= b; return b },
        uBa: function(a, b) { b = b ? Math.ceil(parseInt(b.substr(6)) / 24) : 1; for (var c = "", d = 0, e = a.length; d < e; d++) c += String.fromCharCode((a.charCodeAt(d) - 256 - b + 65535) % 65535); return c },
        Uma: function(a, b) {
            var c = (a + "").slice(-2),
                d = (b + "").slice(-2);
            a = a.slice(0, -2);
            b = b.slice(0, -2);
            var e = parseInt((d + c).slice(1)),
                f = Math.ceil(e / 250) % 2 ? 1 : -1,
                d = parseInt("1" + d) / 3E3;
            a -= parseInt("1" + c) /
                3E3 * f;
            b -= d * (1 < e / 500 ? 1 : -1);
            return new g.T(parseFloat(a).toFixed(5), parseFloat(b).toFixed(5))
        },
        B5: function(a) { return "undefined" !== typeof JSON && JSON.stringify ? g.a.S7(JSON.stringify(a)) : null },
        AFa: function(a, b) {
            if (b || !a.hasOwnProperty("_amap_hash")) {
                var c = g.a.B5(a);
                c && (a._amap_hash = c)
            }
            return a._amap_hash
        },
        iepngFix: function(a) {
            function b() {
                for (var a; c.length;) a = c.shift(), window.DD_belatedPNG.fixPng(a);
                d.CR = !0
            }
            this.l6 || (this.l6 = [], this.CR = !1);
            var c = this.l6,
                d = this;
            if ("img" === a.tagName.toLowerCase()) c.push(a);
            else { a = a.getElementsByTagName("*"); for (var e = 0; e < a.length; e += 1) c.push(a[e]) }
            window.DD_belatedPNG && this.CR ? setTimeout(function() { b() }, 100) : this.CR || g.qb.load("AMap.FixPng", b)
        },
        Ia: function(a) {
            if (g.a.isArray(a))
                if (g.a.isArray(a[0]))
                    for (var b = 0; b < a.length; b += 1) a[b] = g.a.Ia(a[b]);
                else if (b = typeof a[0], "string" === b || "number" === b) return new g.T(a[0], a[1]);
            return a
        },
        nya: function(a) { for (var b = [], c = 0, d = a.length; c < d; c += 1) b[c] = [a[c].x, a[c].y]; return b },
        Yp: function(a) {
            return g.a.isArray(a) ? new g.ud(a[0], a[1]) :
                a
        },
        AO: function(a) {
            var b = a.type,
                c = a.NT,
                d = a.error;
            a = new g.fb.XMLHttpRequest(a.url, { Sc: void 0 === b ? "GET" : b, D1: a.data, jT: "text/plain" });
            a.g("complete", function(a) {
                a = JSON.parse(a.data);
                c && c(a)
            }, this);
            a.g("error", function() {
                var a = { errmsg: "REQUEST_FAILED" };
                d && d(a)
            }, this)
        }
    };
    (function() {
        function a(a) { window.clearTimeout(a) }

        function b(a) { var b, c, d = ["webkit", "moz", "o", "ms"]; for (b = 0; b < d.length && !c; b += 1) c = window[d[b] + a]; return c }

        function c(a) {
            var b = +new Date,
                c = Math.max(0, (g.l.Bl ? 50 : 20) - (b - d));
            d = b + c;
            return window.setTimeout(a, c)
        }
        var d = 0,
            e = window.requestAnimationFrame || b("RequestAnimationFrame") || c,
            f = window.cancelAnimationFrame || b("CancelAnimationFrame") || b("CancelRequestAnimationFrame") || a;
        g.a.Qc = function(a, b, c, d) {
            if (c) b ? g.a.bind(a, b).call(b, d) : a();
            else return e(function() {
                b ?
                    g.a.bind(a, b).call(b, d) : a()
            })
        };
        g.a.fi = function(a) { a && f.call(window, a) }
    })();
    g.a.kT = window.requestIdleCallback ? function(a, b) { return window.requestIdleCallback(a, b) } : function(a) {
        var b = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {},
            c = g.a.vf();
        return setTimeout(function() { a({ didTimeout: !1, timeRemaining: function() { return Math.max(0, 70 - (g.a.vf() - c)) } }) }, b.timeout || 0)
    };
    g.a.ZO = window.cancelIdleCallback ? function(a) { return window.cancelIdleCallback(a) } : function(a) { clearTimeout(a) };
    (function(a) {
        var b = 1,
            c = {};
        a.a.Kva = function(a, b) {
            if (c[a]) {
                var f = c[a];
                f.SD = 1;
                f.result = b;
                if (f.Om) {
                    for (var h = f.Om, k = 0, l = h.length; k < l; k++) h[k].call(null, b);
                    f.Om = null
                }
            }
        };
        a.a.Ula = function(a) { c[a] = null };
        a.a.Xxa = function(a, b) {
            if (c[a]) {
                var f = c[a];
                0 < f.SD ? b(null, f.result) : (f.Om || (f.Om = []), f.Om.push(b))
            } else b(null, a)
        };
        a.a.EQ = function(d, e) {
            var f = navigator.geolocation;
            if (!a.l.FI || "https:" === document.location.protocol) return d(null, f);
            var h;
            e && e.Yxa && (h = "f" + b++, c[h] = { SD: 0 });
            var k = null,
                l = !1;
            e && e.timeout && (k = setTimeout(function() {
                k =
                    void 0;
                d({ code: 3, info: "TIME_OUT", message: "Get geolocation time out." });
                l = !0
            }, e.timeout));
            f.getCurrentPosition(function() { l || (clearTimeout(k), k = void 0, d(null, f)) }, function(b) { l || (clearTimeout(k), k = void 0, 2 === b.code && 0 < b.message.indexOf("permission") ? a.qb.load("AMap.GeoRemoteLoc", function() { d(null, a.P9, h) }) : d(null, f)) }, { timeout: 1E3 });
            return h
        }
    })(g);
    (function(a) {
        var b = a.aa.extend({ ja: [a.sa], r: function() {} });
        a.yj = new b
    })(g);
    (function(a) {
        var b = a.aa.extend({
            ja: [a.sa],
            r: function() { this.Fea() },
            Fea: function() { a.yj && a.yj.g("vecTileParsed.buildings", this.kea, this) },
            m4: function(a) { return a.map.tY },
            bpa: function(a) { return this.m4(a) ? a.map.OM : null },
            Hva: function(a, b) {
                if (b) {
                    var e = b.map;
                    e && (e.OM ? e.OM.toString() : "") !== (a ? a.toString() : "") && (e.OM = a || [], e.set("display", 0))
                }
            },
            r7: function(a, b) {
                if (b) {
                    var e = b.map;
                    e && e.tY !== a && (e.tY = a, e.set("display", 0))
                }
            },
            Tza: function() {},
            oY: function(a, b) {
                if (a)
                    for (var e = 0, f = a.length; e < f; e++) a[e] && 0 > b.indexOf(a[e]) &&
                        b.push(a[e])
            },
            o2: function(b) {
                if (!b) return null;
                b = b.map.ra;
                for (var d = 0, e = b.length; d < e; d++)
                    if (a.o.Uh && b[d] instanceof a.o.Uh && b[d].ga && b[d].ga.length && (-1 !== b[d].ga.indexOf("building") || -1 !== b[d].ga.indexOf("poilabel")) && b[d].La) { var f = b[d].V.get("tiles", null, !0); if (f && f.length) return b[d] }
                return null
            },
            zoa: function(a) {
                if (a = this.o2(a)) {
                    if (a = a.V.get("tiles", null, !0)) a = a[0];
                    else return null;
                    if (!a || !a.length) return null;
                    for (var b = [], e = 0, f = a.length; e < f; e++) {
                        var h = a[e];
                        h.be && h.be.ef && this.oY(h.be.ef, b)
                    }
                    return b
                }
            },
            kea: function(a) {
                if (a.Mo && a.Mo.be) {
                    var b = a.Mo.be.ef;
                    if (b) {
                        var e = [];
                        this.oY(b, e);
                        this.q("vecTileParsed.builds.found", { c1: e, Mo: a.Mo })
                    }
                }
            }
        });
        a.zj = new b
    })(g);
    (function(a) {
        function b() {
            return {
                checkup: function() {
                    var a = Array.prototype.slice.call(arguments, 0);
                    a.pop()(null, a)
                }
            }
        }

        function c(a) {
            return {
                injectCode: function(b, c) {
                    var d = null,
                        e = null;
                    try { d = (new Function("self", b))(a) } catch (f) { console.error("error", e), e = f.toString() }
                    c(e, d)
                }
            }
        }

        function d(a) {
            function b(c, d) {
                function e(a, b, c) {
                    a = { nz: Date.now(), $y: h, error: a, result: b, Vp: !1, Jk: !1 };
                    if (c)
                        for (var f in c) c.hasOwnProperty(f) && (a[f] = c[f]);
                    d(a)
                }
                var f = c.dR,
                    h = c.$y,
                    l = c.lP,
                    m = c.SB,
                    n = c.Dka || [],
                    p = a._wkHandlers[f];
                p ? p[l] ? m ?
                    p[l].apply(p, n.concat(e)) : e(null, p[l].apply(p, n)) : e("Unknown cmd: " + l) : e("Can not find handler for: " + f)
            }
            var c = [],
                d = null,
                e = null;
            for (d in this._wkHandlers) - 1 !== d.indexOf("_def_") && (e = this._wkHandlers.UDa = d);
            "function" === typeof this._wkHandlers[e].r && this._wkHandlers[e].r.call(this._wkHandlers[e]);
            a.Ot = function(a) { c.push.apply(c, a) };
            a.addEventListener("message", function(d) {
                function e(b) {
                    if (t) {
                        t.push(b);
                        var d = !!b.Vp;
                        d || n++;
                        b = n >= h || b.Jk;
                        if (d || b) {
                            d = 1 < t.length ? { bva: t } : t[0];
                            d.nz = Date.now();
                            d.hFa = p;
                            if (c.length) {
                                try {
                                    a.postMessage(d,
                                        c)
                                } catch (f) { a.postMessage(d), console.error(f) }
                                c.length = 0
                            } else a.postMessage(d);
                            t.length = 0;
                            b && (e = t = null)
                        }
                    } else console.error("Seemed callback already sent!!", b, b.result.bc)
                }
                var f = d.data;
                d = f.Zua || [f];
                for (var h = d.length, n = 0, p = Date.now() - f.nz, t = [], f = 0; f < h; f++) b(d[f], e)
            }, !1)
        }

        function e(d, h) {
            this.B = a.extend({ batchSend: !0, lazy: !1, libPolyfills: null }, h);
            this.kp = [];
            this.lA = this.B.clientId || "w" + f++;
            this.B.onReady && this.hS(this.B.onReady);
            this.zF = this.lda();
            if ("function" === typeof d) {
                var m = {};
                m[this.zF] = d;
                d = m
            }
            d[e.RQ] =
                c;
            d[this.yX()] = b;
            this.OF = d;
            this.eB(null);
            this.B.lazy || this.zx();
            a.Opa || !1 === this.B.hostWorker || (a.Opa = this);
            this.Kn && this.Kn.r && this.Kn.r.call(this.Kn)
        }
        var f = 1,
            h = 1;
        a.extend(e, {
            RQ: "_g_",
            Wva: function(a) {
                if (!a.xaa) {
                    var b = [];
                    a.addEventListener("message", function(a) {
                        a = a.data;
                        a = a.bva || [a];
                        for (var c = 0, d = a.length; c < d; c++) {
                            var e = a[c],
                                f;
                            a: {
                                f = e.$y;
                                for (var k = !e.Jk, h = 0, v = b.length; h < v; h++) {
                                    var x = b[h];
                                    if (f === x.$y) {
                                        k || b.splice(h, 1);
                                        f = x;
                                        break a
                                    }
                                }
                                f = void 0
                            }
                            f && f.SB(e.error, e.result, !0)
                        }
                    }, !1);
                    a.laa = b;
                    a.xaa = !0
                }
            }
        });
        a.extend(e.prototype, {
            lda: function() { return "_def_" + this.lA },
            yX: function() { return "_cln_" + this.lA },
            Gia: function() {
                var a = Array.prototype.slice.call(arguments, 0);
                this.k_ = a;
                if (this.ex) {
                    for (var b = 0, c = this.ex.length; b < c; b++) this.ex[b].apply(null, a);
                    this.ex.length = 0
                }
            },
            Ot: function(a) { this.xia && this.kp.push.apply(this.kp, a) },
            hS: function(a) { this.k_ ? a.apply(null, this.k_) : (this.ex || (this.ex = []), this.ex.push(a)) },
            zx: function(b) {
                var c = this;
                if (!c.vW) {
                    c.vW = !0;
                    var d = function(d, e) {
                        d && a.l.ER && console.warn(d);
                        c.Gia.call(c, d, e);
                        b && b(d, e)
                    };
                    a.l.ER ? this.tia(function(a, b) { b ? this.Mea(b, function(a, c) { a ? d(a) : (this.eB(c), this.xO = c, this.kp.length = 0, this.Kn = null, d(null, { Uka: b, iya: c })) }) : d("Worker start failed!") }) : d("Worker not supported!")
                }
            },
            jf: function(b, c) {
                var d = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : a.a.is,
                    f = this;
                b = b || f.zF;
                var h = {};
                if (a.a.Uj(c, "object")) {
                    var q = "return {",
                        r;
                    for (r in c)
                        if (c.hasOwnProperty(r)) var s = c[r],
                            q = "function" === typeof s ? q + ("\n\t" + r + ": " + s.toString() + ",") : "object" === typeof s ? q + ("\n\t" + r + ": " + JSON.stringify(s) +
                                ",") : q + ("\n\t" + r + ': "' + s + '",');
                    c = new Function(q + "\n}")
                }
                f.aW(b, c, h);
                f.eB(null, h);
                f.hS(function(a) {
                    a ? d(a) : f.xO ? (a = f.DX(c, f.AM(f.lA, b), !0), f.xO.sendMessage(e.RQ + ":injectCode", a, function(a, b) {
                        a || f.eB(f.xO, h);
                        d(a, b)
                    })) : d("Worker msger missing!!")
                })
            },
            AM: function(a, b) { if (!a || !b) throw Error("clientId or ns missing!!"); return a + "_" + b },
            Ida: function(a, b, c) {
                function d() {
                    var b = Array.prototype.slice.call(arguments, 0);
                    c.sendMessage.apply(c, [a].concat(b))
                }
                var e = this;
                if (!c) return function() {
                    var a = b.apply(e.Kn, arguments);
                    e.vW || "untilCall" === e.B.lazy && e.zx();
                    return a
                };
                d._proxy2Worker = !0;
                return d
            },
            mba: function(a) {
                var b = {},
                    c;
                for (c in a) a.hasOwnProperty(c) && this.aW(c, a[c], b);
                return b
            },
            aW: function(a, b, c) { b = b.call(null, !1); for (var d in b) b.hasOwnProperty(d) && (c[a + ":" + d] = b[d], a === this.zF && (c[d] = b[d])) },
            eB: function(a, b) {
                if (!b) this.Kn || (this.Kn = this.mba(this.OF)), b = this.Kn;
                else if (this.Kn)
                    for (var c in b) b.hasOwnProperty(c) && (this.Kn[c] = b[c]);
                for (c in b)
                    if (b.hasOwnProperty(c)) {
                        var d = b[c];
                        "function" === typeof d && (this[c] = this.Ida(c,
                            d, a))
                    }
                this.xia = !!a
            },
            DX: function(a, b) {
                var c = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : !1,
                    d = a.toString(),
                    e, d = d.replace(/^function([^\(]*)\(/, function() { e = "_prep_h" + h++; return "function " + e + "(" });
                return e ? "\n\t\t\t\t" + d + "\n\t\t\t\tif (self._wkHandlers['" + b + "'] && " + !c + ") {\n\t\t\t\t\tthrow new Error('" + b + " already exists!')\n\t\t\t\t} else {\n\t\t\t\t\tif (" + c + " && self._wkHandlers['" + b + "']) {\n\t\t\t\t\t\tvar handlerFunObj = " + e + ".call(null, self) || {}\n\n\t\t\t\t\t\tif (typeof Object.assign === 'function') {\n\t\t\t\t\t\t\tObject.assign(self._wkHandlers['" +
                    b + "'], handlerFunObj)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor (var key in handlerFunObj) {\n\t\t\t\t\t\t\t\tif (handlerFunObj.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\t\tself._wkHandlers['" + b + "'][key] = handlerFunObj[key]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself._wkHandlers['" + b + "'] = " + e + ".call(null, self) || {}\t\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t" + e + " = null;\n\t\t\t" : (console.error("No function match!!"), !1)
            },
            tia: function(a) {
                var b = this.lA,
                    c = [],
                    d;
                for (d in this.OF)
                    if (this.OF.hasOwnProperty(d)) {
                        var f = this.DX(this.OF[d], this.AM(b, d));
                        f && c.push(f)
                    }
                b = this.B.libPolyfills || [];
                d = 0;
                for (f = b.length; d < f; d++) b[d] = "(" + b[d].toString() + ")(self);";
                var h = b.join(";\n") + ";\n" + c.join(";\n"),
                    c = this.B.hostWorker,
                    r = this;
                c && c !== r ? c.hS(function(b, c) { b ? a.call(r, b) : c.iya.sendMessage(e.RQ + ":injectCode", h, function(b) { b ? a.call(r, b) : a.call(r, null, c.Uka) }) }) : a.call(r, null, r.Jja(h))
            },
            Jja: function(b) {
                b = ["self._wkHandlers={};", b, "(" + d.toString() + ")(self)"].join("");
                var c;
                try {
                    var e =
                        a.a.createObjectURL(b);
                    c = new Worker(e);
                    setTimeout(function() {
                        a.a.revokeObjectURL(e);
                        e = null
                    }, 3E3)
                } catch (f) { return }
                return c
            },
            eca: function(b) {
                var c = 1,
                    d = b.laa,
                    e = this,
                    f = !!e.B.batchSend;
                return function(h) {
                    var r = Array.prototype.slice.call(arguments, 1),
                        s = "function" === typeof r[r.length - 1] ? r.pop() : null,
                        u = e.lA,
                        v = h.split(":"),
                        x = e.zF;
                    1 < v.length && (h = v[1], x = v[0]);
                    r = { nz: a.a.vf(), dR: e.AM(u, x), SB: !!s, $y: u + "_" + c++, lP: h, Dka: r };
                    s && d.push({ lP: r.lP, dR: r.dR, nz: r.nz, $y: r.$y, SB: s });
                    f ? e.Qaa(b, r) : e.bx(b, r)
                }
            },
            bx: function(a, b) {
                if (this.kp.length) {
                    try {
                        a.postMessage(b,
                            this.kp)
                    } catch (c) { a.postMessage(b), console.error(c) }
                    this.kp.length = 0
                } else a.postMessage(b)
            },
            Qaa: function(b, c) {
                b.tN || (b.tN = []);
                b.tN.push(c);
                if (!b.d_) {
                    var d = this;
                    b.d_ = setTimeout(function() {
                        b.d_ = null;
                        var c = b.tN;
                        c.length && (d.bx(b, 1 === c.length ? c[0] : { nz: a.a.vf(), Zua: c }), c.length = 0)
                    }, 0)
                }
            },
            Bja: function(a) {
                var b = this;
                a.addEventListener("error", function(a) {
                    console.error(a);
                    b.eB(null)
                }, !1);
                e.Wva(a)
            },
            Mea: function(a, b) {
                var c = this;
                c.Bja(a);
                var d = this.eca(a);
                if (e.Kba) b.call(c, null, { sendMessage: d });
                else {
                    e.Kba = !0;
                    var f = [c.yX() + ":checkup", Math.random().toFixed(5) + "", Math.round(1E3 * Math.random()), !1, function(a, e) {
                        var h = !0;
                        if (a || !e || e.length !== f.length - 2) h = !1;
                        else
                            for (var k = 0, v = e.length; k < v; k++)
                                if (e[k] !== f[k + 1]) { h = !1; break }
                        h ? b.call(c, null, { sendMessage: d }) : (console.error(a), b.call(c, "Self checkup failed!!"))
                    }];
                    d.apply(c, f)
                }
            }
        });
        a.Zz = e
    })(g);
    (function() {
        if (!g.oe) {
            g.oe = { Ze: {}, ny: {} };
            var a = g.oe,
                b = g.oe.Ze,
                c = g.a,
                d = g.A;
            b.start = function(b) { a.ny[b.id] = { J: b.J, time: { a4: c.vf() }, rla: function() { return c.vf() - this.time.a4 } } };
            b.end = function(b) {
                var d = a.ny[b.id],
                    e = d.time,
                    d = c.bind(d.rla, d),
                    l = b.index,
                    m = b.key;
                "function" !== typeof b.Gc && (b.Gc = function() {});
                if (void 0 === e[m]) void 0 === l ? e[m] = d() : (e[m] = [], e[m][l] = d());
                else if (void 0 !== l && void 0 === e[m][l]) e[m][l] = d();
                else return b.Gc(Error("Duplicate Invoke"));
                b.Gc(null)
            };
            b.push = function(b) {
                var c = a.ny[b.id].time,
                    d = b.key,
                    e = b.qf;
                "function" !== typeof b.Gc && (b.Gc = function() {});
                if (void 0 === c[d]) c[d] = e;
                else return b.Gc(Error("Duplicate Invoke"));
                b.Gc(null)
            };
            b.send = function(b) {
                var c = d.Bc + "://webapi.amap.com/count?",
                    k = g.extend(e({ J: a.ny[b.id].J }), b.params || {}),
                    l = g.a;
                b.params && b.params.rs && !b.params.type && (b = a.ny[b.id].time, delete b.a4, k = g.extend(k, b));
                b = [];
                for (var m in k) l.isArray(k[m]) ? b.push([m, k[m].join("-")].join("=")) : b.push([m, k[m]].join("="));
                b.push("jl=" + (d.YC ? 1 : 0));
                if (l.Uj(window.performance, "performance") &&
                    l.Uj(window.performance.getEntriesByType, "function")) {
                    var n = 0,
                        p = ["webapi.amap.com", "jsapi-test.amap.test", "localhost"],
                        q = ["/maps", "/css"];
                    l.Qb(window.performance.getEntriesByType("resource"), function(a) {
                        var b = void 0,
                            c = void 0;
                        a.name.match(/:\/\/([^:?#/]+)/) && (b = RegExp.$1);
                        a.name.match(/[^\/](\/[^/?#:]+)/) && (c = RegExp.$1);
                        b && c && l.ja(p, b) && l.ja(q, c) && (n += parseInt(a.responseEnd - a.startTime))
                    });
                    0 !== n && b.push("sd=" + n)
                }
                new g.fb.vb(c + b.join("&"))
            };
            var e = function(a) {
                var b = g.l;
                a = g.h.D2(a.J);
                return {
                    type: "q",
                    resolution: a.width + "*" + a.height,
                    k: d.key,
                    u: d.Qt,
                    iw: b.wf ? 1 : 0,
                    cw: b.e1 ? 1 : 0,
                    gc: b.SQ,
                    m: b.Z ? 1 : 0,
                    cv: b.Zt ? 1 : 0,
                    pf: b.Qy,
                    dpr: window.devicePixelRatio,
                    screenwidth: screen.width,
                    scale: b.CK || 0,
                    detect: b.ia ? 1 : 0,
                    v: d.cr
                }
            }
        }
    })();
    (function() {
        if (!g.KK) {
            var a = g.a.BC({ A: "Conf", extend: "extend", l: "Browser", Lv: "uncodeCoords" });
            g.KK = function() {
                var b = new g.Zz(function() {
                    return {
                        r: function() {
                            this.Fw = { Vj: 0, hv: 0 };
                            this.yk = {};
                            this.Pn = [];
                            this.jp = {};
                            this.Gj = {};
                            this.ht = 0;
                            this.SY = 500
                        },
                        kh: function(a, b) {
                            var e = a.Ed,
                                f = a.we,
                                h = "building" === a.ga[0];
                            (f && e !== this.Fw.hv && this.Fw.hv || !f && !h && e !== this.Fw.Vj && this.Fw.Vj) && this.gka(!!f);
                            f ? this.Fw.hv = e : h || (this.Fw.Vj = e);
                            this.vra(a, b)
                        },
                        gka: function(a) {
                            if (a) this.WV();
                            else if (!a && Object.keys(this.yk).length)
                                for (var b in this.yk) this.yk.hasOwnProperty(b) &&
                                    (a = this.yk[b], a.ct || a.abort())
                        },
                        Twa: function() { this.ht > this.SY && this.XS(Object.keys(this.Gj).slice(0, Math.floor(this.SY / 2))) },
                        XS: function(a) {
                            for (var b = 0, e = a.length; b < e; b++) delete this.Gj[a[b]];
                            this.ht -= a.length
                        },
                        vP: function(a) {
                            var b = a.ga;
                            a = a.we;
                            var e = new XMLHttpRequest;
                            e.$p = "";
                            e.KD = [(new Date).getTime(), a ? 1 : 0, b.join("|")].join("-");
                            return e
                        },
                        E3: function(a, b, e) {
                            var f = this,
                                h = a.Eb,
                                k = a.we,
                                l = [],
                                m = h.filter(function(a) {
                                    var b = f.Gj[a.key];
                                    if (b) {
                                        if (b.KY) return !0;
                                        l.push(a.key)
                                    }
                                    return !1
                                }),
                                n = !1;
                            if (m.length && ((n =
                                    m.length === h.length) || "function" !== typeof b || b(a, m), !k)) {
                                var p = [];
                                m.forEach(function(a) {
                                    a = a.key;
                                    p.push.apply(p, f.Gj[a]);
                                    delete f.Gj[a]
                                });
                                this.ht -= m.length;
                                this.ks(this.extend({}, a, { oE: p, Ed: a.Ed, Qk: n }), e)
                            }!k && l.length && this.XS(l);
                            this.Twa();
                            return n
                        },
                        vra: function(a, b) {
                            function e(e, f) {
                                var m = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : !1;
                                if (p.yk[q.KD] || p.Bea(q)) {
                                    var n = e.split("|");
                                    f && (n[0] = f + n[0]);
                                    var t = n,
                                        w = "";
                                    n[n.length - 1] && (w = n[n.length - 1], t = n.splice(0, n.length - 1));
                                    if (k)
                                        for (var n = 0, y = t.length; n <
                                            y; n++) {
                                            if (t[n]) {
                                                var D = JSON.parse(t[n]);
                                                if (D.length) {
                                                    var C = D[0].split("-").slice(0, -1).join("/");
                                                    p.Gj[C] ? p.Gj[C].push(D) : (p.Gj[C] = [D], p.ht++);
                                                    m && (p.Gj[C].KY = !0)
                                                }
                                            }
                                        } else p.ks(p.extend({}, a, { oE: t, Ed: h, Qk: m, vR: !0 }), b);
                                    return w
                                }
                                r || (p.ql(l, b), r = !0)
                            }
                            var f = this,
                                h = a.Ed,
                                k = a.we,
                                l = a.Eb,
                                m = a.url;
                            if (!this.E3(a, function(a, b) {
                                    var c = a.Eb,
                                        d = a.url,
                                        e = d.match(/&t=([^&]+)/)[1].split(";");
                                    b.reverse().forEach(function(a) { a = c.indexOf(a); - 1 !== a && e.splice(a, 1) });
                                    a.url = d.replace(/&t=[^&]+/, "&t=" + e.join(";"))
                                }, b)) {
                                if (this.rB() &&
                                    (this.WV(), k)) { this.ql(l, b); return }
                                var n = 0,
                                    p = this,
                                    q = this.vP(a);
                                k ? this.Pn.push(q) : (this.yk[q.KD] = q, q.Eb = l, q.Gc = b);
                                var r = !1;
                                q.onreadystatechange = function() {
                                    if (4 === q.readyState && 0 === q.status) q.ct || (q.ct = !0, f.ql(l, b), q.onreadystatechange = null, k ? f.p_(q) : delete f.yk[q.KD]), q = null;
                                    else if (!q.ct)
                                        if (3 === q.readyState) {
                                            var h = q.responseText.substring(n);
                                            q.$p = e(h, q.$p);
                                            n = q.responseText.length
                                        } else 4 === q.readyState && (h = q.responseText.substring(n), a.Ig && (h += "|"), e(h, q.$p, !0), q.$p = "", k ? f.p_(q) : delete f.yk[q.KD],
                                            q = null)
                                };
                                q.onerror = function() {};
                                q.open("GET", m, !0);
                                q.send();
                                k && (q.q8 = l.map(function(a) { return a.key }))
                            }
                        },
                        lD: function(a) {
                            function b(d, p, r) {
                                var s = [r, d, p].join("/");
                                d = e.filter(function(a) { return a.key === s })[0];
                                18 < k && !n && (s += "/" + k);
                                if (d && "loaded" !== d.status && -1 !== m.indexOf(t))
                                    if ("limg" === t) p = h[1], d.qd = p, "string" === typeof p.b && (p.b = x.qA(p.b)), r = "", (r = "object" === typeof p.u ? p.u.url : p.u) && (p.u = { url: r, ik: "limg-" + d.key + "-" + f });
                                    else {
                                        p = {
                                            sg: d.qa,
                                            zi: s,
                                            Aa: h,
                                            Sc: t,
                                            xx: a.Vt,
                                            QC: "building" === t,
                                            oi: "poilabel" === t || "roadlabel" ===
                                                t || "building" === t && q
                                        };
                                        if ("poilabel" === t || "roadlabel" === t) p.qd = d.qd;
                                        t === m[m.length - 1] && (d.status = "loaded");
                                        l.push(p)
                                    }
                            }
                            var e = a.Eb,
                                f = a.JR,
                                h = a.dC,
                                k = a.Ed,
                                l = a.Ic,
                                m = a.ga,
                                n = a.wf,
                                p = a.UQ,
                                q = a.le,
                                r = h[0].split("-"),
                                s = parseInt(r[1]),
                                u = parseInt(r[2]),
                                v = parseInt(r[0]),
                                x = this,
                                t = r[3],
                                r = Math.pow(2, v);
                            10 > v && (s <= p && b(s + r, u, v), s >= r - p && b(s - r, u, v));
                            b(s, u, v)
                        },
                        p_: function(a) { for (var b = this.Pn.length - 1; 0 <= b; b--) this.Pn[b] === a && this.Pn.splice(b, 1) },
                        Bea: function(a) {
                            for (var b = 0, e = this.Pn.length; b < e; b++)
                                if (this.Pn[b] === a) return !0;
                            return !1
                        },
                        rB: function() { return Object.keys(this.yk).length ? !0 : !1 },
                        WV: function() {
                            if (this.Pn.length) {
                                for (var a = this.Pn.length - 1; 0 <= a; a--) {
                                    var b = this.Pn[a];
                                    b.ct || b.abort();
                                    b.q8 && this.XS(b.q8)
                                }
                                this.Pn.length = 0
                            }
                        },
                        ql: function(a, b) { b(null, { Eb: a, u4: !0, disabled: this.disabled }, { Jk: !0 }) }
                    }
                }, { batchSend: !1 });
                b.jf(null, new Function("\n     return {\n      " + a.Conf + ": " + JSON.stringify(g.A) + ",\n      " + a.extend + ": " + g.extend.toString() + ",\n      " + a.Browser + ": " + JSON.stringify(g.l) + ",\n      " + a.uncodeCoords + ": " +
                    g.a.Lv.toString() + "\n     }"));
                return b
            }
        }
    })();
    g.h = {
        CLASS_NAME: "DomUtil",
        get: function(a) { return "string" === typeof a ? document.getElementById(a) : a },
        SC: function(a, b, c) { return a.parentNode == b ? !0 : a.parentNode && a.parentNode !== document.body && !g.h.$m(a.parentNode, c) ? g.h.SC(a.parentNode, b) : !1 },
        eo: function(a) {
            if (!a) return [0, 0];
            var b = a.offsetWidth,
                c = a.offsetHeight;
            b && c || !a.childNodes[0] || (b = b || a.childNodes[0].offsetWidth, c = c || a.childNodes[0].offsetHeight);
            window.opera && (b = Math.max(b, a.childNodes[0].scrollWidth), c = Math.max(c, a.childNodes[0].scrollHeight));
            return [b, c]
        },
        EDa: function(a, b) {
            var c = document.head || document.getElementsByTagName("head")[0];
            if (c) {
                var d = document.createElement("link");
                d.setAttribute("rel", "stylesheet");
                d.setAttribute("type", "text/css");
                d.setAttribute("href", a);
                b ? c.appendChild(d) : c.insertBefore(d, c.firstChild)
            } else document.write("<link rel='stylesheet' href='" + a + "'/>")
        },
        Dd: function(a, b) {
            var c = a.style[b];
            !c && a.currentStyle && (c = a.currentStyle[b]);
            c && "auto" !== c || !document.defaultView || (c = (c = document.defaultView.getComputedStyle(a,
                null)) ? c[b] : null);
            c && "auto" !== c || "height" !== b || (c = a.clientHeight + "px");
            c && "auto" !== c || "width" !== b || (c = a.clientWidth + "px");
            return "auto" === c ? null : c
        },
        qI: function(a) { if (a) return new g.ud(a.clientWidth || document.body.clientWidth, a.clientHeight || (g.l.Qr ? "CSS1Compat" === document.compatMode ? document.documentElement.clientHeight : document.body.clientHeight : document.body.clientHeight), !0) },
        D2: function(a) { return new g.ud(a.clientWidth, a.clientHeight) },
        QQ: function(a) {
            var b = 0,
                c = 0,
                d = a,
                e = document.body,
                f = document.documentElement,
                h, k = g.l.Iu;
            do {
                b += d.offsetTop || 0;
                c += d.offsetLeft || 0;
                b += parseInt(g.h.Dd(d, "borderTopWidth"), 10) || 0;
                c += parseInt(g.h.Dd(d, "borderLeftWidth"), 10) || 0;
                h = g.h.Dd(d, "position");
                if (d.offsetParent === e && "absolute" === h) break;
                if ("fixed" === h) {
                    b += e.scrollTop || f.scrollTop || 0;
                    c += e.scrollLeft || f.scrollLeft || 0;
                    break
                }
                d = d.offsetParent
            } while (d);
            d = a;
            do {
                if (d === e) break;
                b -= d.scrollTop || 0;
                c -= d.scrollLeft || 0;
                g.h.lna() || !g.l.Z8 && !k || (c += d.scrollWidth - d.clientWidth, k && "hidden" !== g.h.Dd(d, "overflow-y") && "hidden" !== g.h.Dd(d, "overflow") &&
                    (c += 17));
                d = d.parentNode
            } while (d);
            return new g.H(c, b)
        },
        lna: function() { g.h.yca || (g.h.yca = !0, g.h.xca = "ltr" === g.h.Dd(document.body, "direction")); return g.h.xca },
        create: function(a, b, c, d) {
            a = document.createElement(a);
            c && (a.className = c);
            b && (d && "before" === d ? b.insertBefore(a, b.firstChild) : b.appendChild(a));
            return a
        },
        R1: function() {
            document.selection && document.selection.empty && document.selection.empty();
            this.Aha || (this.Aha = document.onselectstart, document.onselectstart = g.a.l2)
        },
        e2: function() {},
        Nwa: function(a,
            b, c) { c ? this.Ra(a, b) : this.ab(a, b) },
        $m: function(a, b) { if (a && b) return 0 < a.className.length && RegExp("(^|\\s)" + b + "(\\s|$)").test(a.className) },
        Ra: function(a, b) { a && b && (a.classList && a.classList.add ? a.classList.add(b) : g.h.$m(a, b) || (a.className += (a.className ? " " : "") + b)) },
        Ava: function(a, b) { a && (a.className = b || "") },
        ab: function(a, b) {
            function c(a, c) { return c === b ? "" : a }
            a && b && (a.classList && a.classList.remove ? a.classList.remove(b) : a.className = a.className.replace(/(\S+)\s*/g, c).replace(/(^\s+|\s+$)/, ""))
        },
        V2: function(a,
            b) { return 1 === b ? "" : "opacity" in a.style ? "opacity:" + b : 8 <= document.documentMode ? "-ms-filter:'progid:DXImageTransform.Microsoft.Alpha(opacity=" + Math.ceil(100 * b) + ")'" : "filter:alpha(opacity=" + Math.ceil(100 * b) + ")" },
        hq: function(a, b) {
            if (a.style)
                if ("opacity" in a.style) a.style.opacity = b;
                else if ("filter" in a.style) {
                var c = Math.round(100 * b);
                a.style.filter = "";
                100 !== c && (a.style.filter = " progid:DXImageTransform.Microsoft.Alpha(opacity=" + c + ")")
            }
        },
        RT: function(a) {
            for (var b = document.documentElement.style, c = 0; c < a.length; c +=
                1)
                if (a[c] in b) return a[c];
            return !1
        },
        l3: function(a) { var b = g.l.a9; return "translate" + (b ? "3d" : "") + "(" + a.x + "px," + a.y + "px" + ((b ? ",0" : "") + ")") },
        FCa: function(a, b) { return g.h.l3(b.add(b.Gd(-1 * a))) + (" scale(" + a + ") ") },
        v7: function(a, b, c) { a.Ni = b;!c && g.l.$G ? (b = g.h.l3(b), c = a.style[g.h.dg].split("rotate"), 1 < c.length ? (c[0] = b, a.style[g.h.dg] = c.join("rotate")) : a.style[g.h.dg] = b, g.l.m5 && (a.style.WebkitBackfaceVisibility = "hidden")) : (a.style.left = b.x + "px", a.style.top = b.y + "px") },
        se: function(a) {
            a.Ni || (a.Ni = a.style.left ?
                new g.H(parseInt(a.style.left), parseInt(a.style.top)) : new g.H(0, 0));
            return a.Ni
        },
        qFa: function(a, b) { a = a instanceof Array ? a : [a]; for (var c = 0; c < a.length; c += 1) a[c].style.cssText = b },
        o7: function(a, b) { ";" !== b[b.length - 1] && (b += ";"); return b.toLowerCase() !== a.style.cssText.replace(/ /g, "").toLowerCase() ? (a.style.cssText = b, !0) : !1 },
        Va: function(a, b) {
            a = a instanceof Array ? a : [a];
            for (var c = 0; c < a.length; c += 1)
                for (var d in b) b.hasOwnProperty(d) && (a[c].style[d] = b[d]);
            return this
        },
        FD: function(a) { for (; a.childNodes.length;) a.removeChild(a.childNodes[0]) },
        remove: function(a) { a && a.parentNode && a.parentNode.removeChild(a) },
        rotate: function(a, b, c) {
            var d = g.h.dg;
            c = c || { x: a.clientWidth / 2, y: a.clientHeight / 2 };
            d ? (a.style[d] = "" + (" rotate(" + b + "deg)"), a.style[g.h.Fs[d] + "-origin"] = c.x + "px " + c.y + "px") : (d = Math.cos(b * Math.PI / 180), b = Math.sin(b * Math.PI / 180), a.style.filter = "progid:DXImageTransform.Microsoft.Matrix()", 0 < a.filters.length && (a = a.filters.item(0), a.Dx = -c.x * d + c.y * b + c.x, a.Dy = -c.x * b - c.y * d + c.y, a.M11 = a.M22 = d, a.M12 = -(a.M21 = b)))
        },
        g3: function(a, b, c) {
            var d = g.h.dg;
            c = c || { x: a.clientWidth / 2, y: a.clientHeight / 2 };
            return d ? g.h.Fs[d] + ":" + ("" + (" rotate(" + b + "deg)")) + ";" + (g.h.Fs[d] + "-origin:" + c.x + "px " + c.y + "px") : ""
        },
        bm: function(a, b, c) {
            a.width = b;
            a.height = c
        },
        getElementsByClassName: function(a, b, c) {
            b = b || "*";
            c = c || document;
            if (c.getElementsByClassName) return c.getElementsByClassName(a);
            b = c.getElementsByTagName(b);
            a = RegExp("(^|\\s)" + a + "(\\s|$)");
            c = [];
            for (var d = 0, e; d < b.length; d++) e = b[d], a.test(e.className) && c.push(e);
            return c
        },
        fillText: function(a, b) {
            if (a) return void 0 !== a.textContent ?
                a.textContent = b : void 0 !== a.innerText ? a.innerText = b : a.innerHTML = b, a
        }
    };
    (function() {
        var a = g.h.RT(["userSelect", "WebkitUserSelect", "OUserSelect", "MozUserSelect", "msUserSelect"]),
            b;
        g.extend(g.h, {
            R1: function() { g.F.g(window, "selectstart", g.F.preventDefault); if (a) { var c = document.documentElement.style; "none" !== c[a] && (b = c[a], c[a] = "none") } },
            e2: function() {
                g.F.G(window, "selectstart", g.F.preventDefault);
                a && "none" !== b && (document.documentElement.style[a] = b, b = "none")
            },
            dna: function() { g.F.g(window, "dragstart", g.F.preventDefault) },
            Mna: function() { g.F.G(window, "dragstart", g.F.preventDefault) }
        })
    })();
    g.h.dg = g.h.RT(["WebkitTransform", "OTransform", "MozTransform", "msTransform", "transform"]);
    g.h.Fs = { transform: "transform", WebkitTransform: "-webkit-transform", OTransform: "-o-transform", MozTransform: "-moz-transform", msTransform: "-ms-transform" };
    g.h.VE = g.h.RT(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]);
    g.h.gza = "webkitTransition" === g.h.VE || "OTransition" === g.h.VE ? g.h.VE + "End" : "transitionend";
    g.F = {
        g: function(a, b, c, d) {
            function e(b) {
                b = b || window.event;
                b.target = b.target || b.srcElement;
                return c.call(d || a, b, k)
            }
            var f = g.a.ub(a) + "_" + g.a.ub(c) + "_" + g.a.ub(d || a),
                h = b + f;
            if (a[h]) return this;
            var k = b;
            g.l.cQ && "mousewheel" === b && (b = "DOMMouseScroll");
            if (g.l.Qr && ("mouseover" === b || "mouseout" === b)) {
                var l = e;
                b = "mouseover" === b ? "mouseenter" : "mouseleave";
                e = function(a) { l(a) }
            }
            if (g.l.n6 && 0 === b.indexOf("touch")) return a[h] = e, this.oka(a, b, e, f);
            g.l.Bf && "dblclick" === b && this.mka && this.mka(a, e, f);
            "addEventListener" in a ? a.addEventListener(b,
                e, !1) : "attachEvent" in a ? a.attachEvent("on" + b, e) : a["on" + b] = e;
            a[h] = e;
            return this
        },
        oj: function(a, b, c, d) {
            var e = this;
            this.g(a, b, function h(k) { e.G(a, b, h, d); return c.call(d || a, k || window.event, b) }, d)
        },
        G: function(a, b, c, d) {
            c = g.a.ub(a) + "_" + g.a.ub(c) + "_" + g.a.ub(d || a);
            d = b + c;
            var e = a[d];
            g.l.cQ && "mousewheel" === b && (b = "DOMMouseScroll");
            !g.l.Qr || "mouseover" !== b && "mouseout" !== b || (b = "mouseover" === b ? "mouseenter" : "mouseleave");
            g.l.n6 && -1 < b.indexOf("touch") ? this.Cua(a, b, c) : g.l.Bf && "dblclick" === b && this.yua ? this.yua(a, c) :
                "removeEventListener" in a ? a.removeEventListener(b, e, !1) : "detachEvent" in a && -1 === b.indexOf("touch") ? e && a.detachEvent("on" + b, e) : a["on" + b] = null;
            a[d] = void 0;
            return this
        },
        xFa: function(a, b) {
            var c = document.createEvent("MouseEvents");
            c.initMouseEvent(a, !0, !0, window, 1, b.screenX, b.screenY, b.clientX, b.clientY, !1, !1, !1, !1, 0, null);
            b.target.dispatchEvent(c)
        },
        tka: function(a) {
            a.rf = "info";
            g.l.ue && g.F.stopPropagation(a)
        },
        stopPropagation: function(a) { a.stopPropagation ? a.stopPropagation() : a.cancelBubble = !0; return this },
        jwa: function(a) {
            var b = g.F.tka;
            g.l.Bf && (g.F.g(a, "touchstart", b, this), g.F.g(a, "touchmove", b, this), g.F.g(a, "touchend", b, this));
            g.l.Z || (g.F.g(a, "mousedown", b, this), g.F.g(a, "mouseup", b, this), g.F.g(a, "mousemove", b, this), g.F.g(a, "mousewheel", b, this));
            g.l.AS && (g.F.g(a, "pointerdown", b, this), g.F.g(a, "pointerup", b, this), g.F.g(a, "pointermove", b, this));
            g.l.o5 && (g.F.g(a, "MSPointerDown", b, this), g.F.g(a, "MSPointerUp", b, this), g.F.g(a, "MSPointerMove", b, this))
        },
        preventDefault: function(a) {
            a.preventDefault ? a.preventDefault() :
                a.returnValue = !1;
            return this
        },
        stop: function(a) { return g.F.preventDefault(a).stopPropagation(a) },
        zva: function(a) { return a && a.getBoundingClientRect ? (a.qL = a.getBoundingClientRect(), a.JV = [a.clientLeft, a.clientTop], !0) : !1 },
        Axa: function(a) { a.qL && (a.qL = null, a.JV = null) },
        $na: function(a, b) {
            var c = b.qL || b.getBoundingClientRect(),
                d = b.JV || [b.clientLeft, b.clientTop];
            return new g.H(a.clientX - c.left - d[0], a.clientY - c.top - d[1])
        },
        Ql: function(a, b) {
            if (b && b.getBoundingClientRect) return this.$na(a, b);
            var c = document.body,
                d = document.documentElement,
                c = new g.H(g.l.Bf ? a.pageX : a.clientX + (c.scrollLeft || d.scrollLeft), g.l.Bf ? a.pageY : a.clientY + (c.scrollTop || d.scrollTop));
            return b ? c.$a(g.h.QQ(b)) : c
        },
        r4: function(a) { return 1 === a.which || 0 === a.button || 1 === a.button }
    };
    g.extend(g.F, {
        sN: [],
        WY: !1,
        oka: function(a, b, c, d) {
            switch (b) {
                case "touchstart":
                    return this.rka(a, b, c, d);
                case "touchend":
                    return this.pka(a, b, c, d);
                case "touchmove":
                    return this.qka(a, b, c, d)
            }
        },
        jo: function(a) {
            if (g.l.AS) return a;
            switch (a) {
                case "pointerdown":
                    return "MSPointerDown";
                case "pointerup":
                    return "MSPointerUp";
                case "pointercancel":
                    return "MSPointerCancel";
                case "pointermove":
                    return "MSPointerMove"
            }
        },
        rka: function(a, b, c, d) {
            function e(a) {
                for (var b = !1, d = 0; d < f.length; d += 1)
                    if (f[d].pointerId === a.pointerId) {
                        b = !0;
                        break
                    }
                b || f.push(a);
                a.touches = f.slice();
                a.changedTouches = [a];
                c(a)
            }
            var f = this.sN;
            a["_amap_touchstart" + d] = e;
            a.addEventListener(this.jo("pointerdown"), e, !1);
            this.WY || (a = function(a) {
                for (var b = 0; b < f.length; b += 1)
                    if (f[b].pointerId === a.pointerId) { f.splice(b, 1); break }
            }, document.documentElement.addEventListener(this.jo("pointerup"), a, !1), document.documentElement.addEventListener(this.jo("pointercancel"), a, !1), this.WY = !0);
            return this
        },
        qka: function(a, b, c, d) {
            function e(a) {
                if (a.pointerType !== a.MSPOINTER_TYPE_MOUSE ||
                    0 !== a.buttons) {
                    for (var b = 0; b < f.length; b += 1)
                        if (f[b].pointerId === a.pointerId) { f[b] = a; break }
                    a.touches = f.slice();
                    a.changedTouches = [a];
                    c(a)
                }
            }
            var f = this.sN;
            a["_amap_touchmove" + d] = e;
            a.addEventListener(this.jo("pointermove"), e, !1);
            return this
        },
        pka: function(a, b, c, d) {
            function e(a) {
                for (var b = 0; b < f.length; b += 1)
                    if (f[b].pointerId === a.pointerId) { f.splice(b, 1); break }
                a.touches = f.slice();
                a.changedTouches = [a];
                c(a)
            }
            var f = this.sN;
            a["_amap_touchend" + d] = e;
            a.addEventListener(this.jo("pointerup"), e, !1);
            a.addEventListener(this.jo("pointercancel"),
                e, !1);
            return this
        },
        Cua: function(a, b, c) {
            c = a["_amap_" + b + c];
            switch (b) {
                case "touchstart":
                    a.removeEventListener(this.jo("pointerdown"), c, !1);
                    break;
                case "touchmove":
                    a.removeEventListener(this.jo("pointermove"), c, !1);
                    break;
                case "touchend":
                    a.removeEventListener(this.jo("pointerup"), c, !1), a.removeEventListener(this.jo("pointercancel"), c, !1)
            }
            return this
        }
    });
    (function() {
        function a(a) {
            var b = a.target || a.srcElement;
            b.SV && f(b.SV);
            b.SV = e(function() {
                var c = b.Vo;
                if (c && c.Uo)
                    for (var d = 0; d < c.Uo.length; d += 1) c.Uo[d].call(c, a)
            })
        }

        function b() {
            var b = this.contentDocument.defaultView;
            b.Vo = this.vaa;
            b.addEventListener("resize", a);
            a.call(b, { target: b })
        }
        var c = document.attachEvent,
            d = navigator.userAgent.match(/(Trident|Edge)/),
            e = g.a.Qc,
            f = g.a.fi;
        g.extend(g.F, {
            ska: function(e, f) {
                if (!e.Uo)
                    if (e.Uo = [], c) e.Vo = e, e.attachEvent("onresize", a);
                    else {
                        "static" === window.getComputedStyle(e).position &&
                            (e.style.position = "relative");
                        var l = e.Vo = document.createElement("object");
                        l.setAttribute("style", "display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;");
                        l.vaa = e;
                        l.onload = b;
                        l.type = "text/html";
                        d && e.appendChild(l);
                        l.data = "about:blank";
                        d || e.appendChild(l)
                    }
                e.Uo.push(f)
            },
            MEa: function(b, d) {
                b.Uo.splice(b.Uo.indexOf(d), 1);
                b.Uo.length || (c ? b.detachEvent("onresize", a) : (b.Vo.contentDocument.defaultView.removeEventListener("resize",
                    a), b.Vo = !b.removeChild(b.Vo)))
            },
            Vla: function(a) {
                a.Uo = null;
                if (a.Vo) {
                    var b = a.Vo;
                    b.parentNode === a && b.parentNode.removeChild(b);
                    a.Vo = null
                }
            }
        })
    })();
    g.qb = {
        lsa: g.A.yb + "/maps",
        iu: g.aa.iu,
        TR: 0,
        Py: [],
        du: {},
        Kg: function(a, b) {
            function c() {
                d += 1;
                d === e.length && b && b()
            }
            a.length || b();
            for (var d = 0, e = [], f = 0; f < a.length; f += 1) {
                var h = this.iu[a[f]];
                if (h)
                    for (var k = 0; k < h.length; k += 1) e.push(h[k]);
                e.push(a[f])
            }
            for (f = 0; f < e.length; f += 1) this.ZP(e[f], c)
        },
        TC: function(a) {
            for (var b = 0; b < a.length; b += 1)
                if (1 !== this.eC(a[b]).status) return !1;
            return !0
        },
        ZP: function(a, b) {
            var c = this.eC(a);
            if (1 === c.status) b && b();
            else {
                b && c.Ax.push(b);
                try {
                    if (g.l.Zr && window.localStorage) {
                        var d = window.localStorage["_AMap_" +
                            a];
                        d && (d = JSON.parse(d), d.version === g.A.vj ? (window._jsload_(a, d.script, !0), d.css && window._cssload_(a, d.css, !0)) : window.localStorage.removeItem("_AMap_" + a))
                    }
                } catch (e) {}
                if (0 === c.status) {
                    this.gua(a);
                    var f = this;
                    f.TR || (f.TR = 1, window.setTimeout(function() {
                        f.TR = 0;
                        var a = f.lsa + "/modules?v=" + g.A.cr + "&key=" + g.A.key + "&m=" + f.Py.join(",") + "&vrs=" + g.A.vj;
                        g.qb.ft(f.Py.join(","));
                        f.Py = [];
                        c.WJ = f.Gra(a)
                    }, 1));
                    c.status = -1
                }
            }
        },
        ft: function(a) {
            a = g.A.Rd + "/v3/log/init?" + ["s=rsv3&product=JsModule&key=" + g.A.key, "m=" + a].join("&");
            new g.fb.vb(a, { callback: "callback" })
        },
        load: function(a, b) {
            var c = this.iu[a];
            if (c) {
                for (var d = [], e = 0; e < c.length; e += 1) d.push(c[e]);
                d.push(a);
                for (var f = 0, c = function() {
                        f += 1;
                        f === d.length && b && b()
                    }, e = 0; e < d.length; e += 1) this.ZP(d[e], c)
            } else this.ZP(a, b)
        },
        gua: function(a) {
            for (var b = 0; b < this.Py.length; b += 1)
                if (this.Py[b] === a) return;
            this.Py.push(a)
        },
        pn: function(a, b) {
            var c = this.eC(a);
            try { eval(b) } catch (d) { return }
            c.status = 1;
            for (var e = 0, f = c.Ax.length; e < f; e += 1) c.Ax[e]();
            c.Ax = []
        },
        nd: function(a, b) {
            var c = this;
            c.timeout = setTimeout(function() {
                1 !==
                    c.du[a].status ? (c.remove(a), c.load(a, b)) : clearTimeout(c.timeout)
            }, 5E3)
        },
        eC: function(a) { this.du[a] || (this.du[a] = {}, this.du[a].status = 0, this.du[a].Ax = []); return this.du[a] },
        remove: function(a) { this.du[a] = null },
        Gra: function(a) {
            g.A.mode && (a += "&mode=" + g.A.mode);
            var b = document.createElement("script");
            b.charset = "utf-8";
            a && 0 === a.indexOf(g.A.yb) && (b.crossOrigin = "Anonymous");
            b.src = a;
            document.body.appendChild(b);
            return b
        }
    };
    window._jsload_ = function(a, b, c) {
        var d = g.qb.eC(a);
        d.WJ && 0 <= g.a.indexOf(document.body.childNodes, d.WJ) && document.body.removeChild(d.WJ);
        d.WJ = null;
        try {
            if (!c && window.localStorage && b && "" !== b && g.l.Zr) {
                var e = window.localStorage["_AMap_" + a],
                    e = e || "{}",
                    e = JSON.parse(e);
                e.version !== g.A.vj || e.script ? window.localStorage.setItem("_AMap_" + a, JSON.stringify({ version: g.A.vj, script: b })) : window.localStorage.setItem("_AMap_" + a, JSON.stringify({ version: g.A.vj, script: b, css: e.css }))
            }
        } catch (f) {}
        g.qb.pn(a, b)
    };
    window._cssload_ = function(a, b, c) {
        try {!c && window.localStorage && b && "" !== b && g.l.Zr && window.localStorage.setItem("_AMap_" + a, JSON.stringify({ css: b, version: g.A.vj })) } catch (d) {}
        var e = document.createElement("style");
        e.type = "text/css"; - 1 === g.A.yb.indexOf("webapi.amap.com") && (b = b.replace(/webapi.amap.com/gi, g.A.yb.split("://")[1]));
        "https" === g.A.Bc && (b = b.replace(/http:/gi, "https:"));
        e.styleSheet ? (a = function() { try { e.styleSheet.cssText = b } catch (a) {} }, e.styleSheet.disabled ? setTimeout(a, 10) : a()) : e.appendChild(document.createTextNode(b));
        a = document.head || document.getElementsByTagName("head")[0];
        2 > a.childNodes.length ? a.appendChild(e) : a.insertBefore(e, a.childNodes[1])
    };
    (function(a) {
        var b = g.l;
        if (!g.indexedDB && b.yi) {
            var c = a.indexedDB || a.webkitIndexedDB || a.msIndexedDB || a.mozIndexedDB,
                d = a.IDBKeyRange || a.iGa || a.SDa || a.RDa;
            if (c) {
                var e = g.a,
                    f = null;
                a = "amap-jsapi" + (a.Iya ? "-debug" : "");
                var h = g.extend({}, g.sa),
                    k;
                try {
                    k = c.open(a), k.onsuccess = function() {
                        f = this.result;
                        h.q("dbReady", { status: "success" })
                    }, k.onerror = function() { h.q("dbReady", { status: "error" }) }, k.onblocked = function() { h.q("dbReady", { status: "blocked" }) }, k.onupgradeneeded = function(a) {
                        a.currentTarget.result.createObjectStore("tile", { keyPath: "tileKey" })
                    }
                } catch (l) { b.yi = !1 } finally { if (!b.yi) return }
                var b = function(a) { return function() { try { return a.apply(this, arguments) } catch (b) { var c = arguments[arguments.length - 1]; "function" === typeof c && setTimeout(function() { c({ code: 4, MH: b }) }, 1) } } },
                    m = b(function(a, b) { return null === f ? (setTimeout(function() { b && b({ code: 3 }) }, 1), null) : f.transaction("tile", a).objectStore("tile") });
                g.indexedDB = {
                    BB: function(a, b) {
                        f ? "function" === typeof a && a() : h.g("dbReady", function(c) {
                            "success" === c.status ? "function" === typeof a &&
                                a() : "function" === typeof b && b({ code: 3, status: status })
                        })
                    },
                    count: b(function(a) {
                        var b = this,
                            c = arguments;
                        this.BB(function() { b.ft.apply(b, c) }, a)
                    }),
                    ft: b(function(a) {
                        var b = m("readonly", a).count();
                        b.onsuccess = function() { a(null, b.result) };
                        b.onerror = function() { a({ code: 7 }) }
                    }),
                    get: b(function(a, b, c) {
                        var d = this,
                            e = setTimeout(function() { e && (e = null, c && c({ code: 7 })) }, b.timeout || 1E3);
                        this.BB(function() { d.Yca.call(d, a, function(a, b) { e && (clearTimeout(e), e = null, c(a, b)) }) }, c)
                    }),
                    Yca: b(function(a, b) {
                        var c = m("readonly", b);
                        if (e.isArray(a)) {
                            var d,
                                f;
                            (function() {
                                function e(b) {
                                    var f = c.get(a[b]);
                                    f.onsuccess = function(a) {
                                        a.target.result && (d[b] = a.target.result);
                                        k()
                                    };
                                    f.onerror = k
                                }

                                function k() {
                                    f++;
                                    f === a.length && b(null, d)
                                }
                                d = [];
                                for (var h = f = 0, l = a.length; h < l; h++) e(h)
                            })()
                        } else {
                            var k = c.get(a);
                            k.onsuccess = function(a) { b && b(null, a.target.result) };
                            k.onerror = function() { b && b({ code: 1 }) }
                        }
                    }),
                    add: b(function(a, b) {
                        var c = this,
                            d = arguments;
                        this.BB(function() { c.zaa.apply(c, d) }, b)
                    }),
                    zaa: b(function(a, b) {
                        function c() { 0 === --f && b(null) }
                        e.isArray(a) || (a = [a]);
                        var d = a.length,
                            f =
                            d,
                            k = 0,
                            h = Math.ceil(d / 5),
                            l = setInterval(function() {
                                if (k++ < h) {
                                    var e = 5 * k;
                                    e > d && (e = d);
                                    for (var f = m("readwrite", b), s = 5 * (k - 1); s < e; s++) {
                                        var D = f.put(a[s]);
                                        D.onsuccess = D.onerror = c
                                    }
                                } else clearInterval(l)
                            }, 32)
                    }),
                    remove: b(function(a, b) {
                        var c = this,
                            d = arguments;
                        this.BB(function() { c.Nia.apply(c, d) }, b)
                    }),
                    Nia: b(function(a, b) {
                        var c = m("readwrite", b);
                        e.isArray(a) || (a = [a]);
                        a = a.sort();
                        c.openCursor(d.bound(a[0], a[a.length - 1])).onsuccess = function(c) {
                            if (c = c.target.result) {
                                if (e.ja(c.value.tileKey, a)) c["delete"]();
                                for (var d = -1,
                                        f = 0, k = a.length; f < k; f++)
                                    if (a[f] > c.value.tileKey) { d = f; break }
                                c["continue"](a[d])
                            } else b && b(null)
                        }
                    }),
                    clear: b(function(a) {
                        var b = this,
                            c = arguments;
                        this.BB(function() { b.oF.apply(b, c) }, a)
                    }),
                    oF: b(function(a) {
                        var b = m("readwrite", a).clear();
                        b.onsuccess = function() { a && a(null) };
                        b.onerror = function() { a && a({ code: 2 }) }
                    })
                }
            } else b.yi = !1
        }
    })(window);
    (function() {
        function a(a) { u.data.keys = u.data.keys.filter(function(b) { return !r.ja(a, b) }).concat(a) }

        function b(a) {
            var b = g.A.vj + "|" + a.zi.replace(/\//g, ",") + "|" + (a.wf ? "w" : "v") + "|",
                c;
            c = a.ia;
            var d = a.le;
            c = [c ? 1 : 0, q.Z ? 1 : 0, d ? 1 : 0].join();
            return b + c + "|" + m(a.url)
        }

        function c() { u.data.keys.length >= u.VK && d() }

        function d() {
            var a = u.data.keys.length,
                b = Math.floor(a / 2);
            a > u.VK && (b = Math.floor(a - u.VK / 2));
            a = u.data.keys.slice(0, b);
            u.data.keys = u.data.keys.slice(b + 1);
            s.remove(a, function(a) { a && 3 === a.code && (q.yi = !1) })
        }

        function e() {
            var a =
                0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : r.is;
            k();
            x.setItem(u.key, u.data, !0);
            f(a)
        }

        function f(a) {
            q.yi && s && s.clear(function(b) {
                b && 3 === b.code && (q.yi = !1);
                a()
            })
        }

        function h() {
            k();
            var a = x.getItem(u.key, !0);
            a && (a.AK === u.data.AK && a.F0 === u.data.F0 ? u.data = a : e())
        }

        function k() {
            u.data = { AK: q.Cf, F0: g.A.vj, keys: [], tf: {}, Xm: {} };
            u.Gs = {}
        }

        function l(a) { a && (u.data.AK = a, q.Cf = a) }

        function m(a) { var b = "limg"; /flds=([^&]+)/.test(a) && (b = RegExp.$1); return b }

        function n(a) {
            if ("object" === typeof a && null !== a) {
                var b = [];
                if (r.isArray(a))
                    if (Object.keys(a).length == a.length) b = a.map(function(a) { return n(a) });
                    else {
                        b.push("__arrayObject");
                        var c = {},
                            d;
                        for (d in a)(0 > parseInt(d) || isNaN(parseInt(d))) && a.hasOwnProperty(d) && (c[d] = n(a[d]));
                        b.push(c);
                        b.push(a.map(function(a) { return n(a) }))
                    }
                else if (r.Uj(a, "Float32Array")) b.push("__Float32Array"), b.push(Array.prototype.slice.call(a));
                else if (r.Uj(a, "Uint16Array")) b.push("__Uint16Array"), b.push(Array.prototype.slice.call(a));
                else
                    for (d in b = {}, a) a.hasOwnProperty(d) && (b[d] = n(a[d]));
                return b
            }
            return a
        }

        function p(a) {
            if ("object" === typeof a && null !== a) {
                var b = {};
                if (r.isArray(a))
                    if ("__Float32Array" === a[0]) b = new Float32Array(a[1]);
                    else if ("__Uint16Array" === a[0]) b = new Uint16Array(a[1]);
                else if ("__arrayObject" === a[0]) {
                    b = p(a[2]);
                    a = a[1];
                    for (var c in a) a.hasOwnProperty(c) && (b[c] = a[c])
                } else b = a.map(function(a) { return p(a) });
                else
                    for (c in a) a.hasOwnProperty(c) && (b[c] = p(a[c]));
                return b
            }
            return a
        }
        var q = g.l,
            r = g.a;
        if (!g.Bj && q.yi) {
            var s = g.indexedDB,
                u = { VK: 1E3, key: "_AMap_data.tileKeys" },
                v = [],
                x = {
                    getItem: function(a,
                        b) {
                        var c = localStorage.getItem(a);
                        if (c && b) {
                            var d;
                            try { d = JSON.parse(c) } catch (e) { d = null }
                            c = d
                        }
                        return c
                    },
                    setItem: function(a, b, c) {
                        var d = b;
                        c && (d = JSON.stringify(b), 1.5 < d.length / 1024 / 1024 && Object.keys(b.Xm).length && (b.Xm = {}, d = JSON.stringify(b)));
                        try { localStorage.setItem(a, d) } catch (f) { e() }
                    }
                };
            g.Bj = {
                clear: e,
                get: function(c, d) {
                    function f(a) {
                        var b = { fR: l, l5: H, NDa: x, tf: u.data.tf };
                        a && z.length && (/\|limg/.test(z[0]) ? b.Q4 = a.map(function(a) { return JSON.parse(a.data) }).filter(function(a) { return a && a.key }) : b.Ic = k(a));
                        d && d(null,
                            b);
                        x.length && (l = [], H = [])
                    }

                    function k(a) {
                        var b = [];
                        m(c.url).split(",").forEach(function(c) {
                            a.forEach(function(a) {
                                if (a = JSON.parse(a.data[c])) {
                                    var d = a.sg;
                                    a.sg = new g.Cq(d.z, d.x, d.y);
                                    a.sg.S = d.S;
                                    b.push(a)
                                }
                            })
                        });
                        return b
                    }
                    var h = "FS" === c.type;
                    if (!q.Zr || !(h || q.yi && 0 !== u.data.keys.length)) return d({ code: 1 });
                    var l = [],
                        x = [],
                        z = [],
                        H = [],
                        G = [];
                    c.Ewa.forEach(function(a) {
                        var d = !1,
                            e = b({ zi: a.key, url: c.url, wf: c.wf, ia: c.o.ia, le: c.le });
                        h && (v.push(e), u.data.Xm[e] && (l.push(a), z.push(e), G.push({ data: p(u.data.Xm[e]), tileKey: e }),
                            d = !0));
                        d || (q.yi && r.ja(u.data.keys, e) ? (z.push(e), x.push(a)) : H.push(a))
                    });
                    if (h && 0 === x.length || 0 === z.length) return f(G);
                    h && G.length && G.forEach(function(a) {
                        a = r.indexOf(z, a.tileKey);
                        z.splice(a, 1)
                    });
                    s.get(z, { timeout: c.timeout || 1E3 }, function(b, c) {
                        if (b || c.length !== z.length) b && 3 === b.code ? q.yi = !1 : e(), H = x, x = [], f(null);
                        else {
                            if (h)
                                for (var d = c.length - 1; 0 <= d; d--) {
                                    var k = c[d];
                                    k && k.data ? u.data.Xm[k.tileKey] = n(k.data) : H.push(x.splice(d, 1)[0])
                                }
                            l = x;
                            x = [];
                            f(c);
                            a(z)
                        }
                    });
                    (H.length || x.length) && f(G)
                },
                Mv: function(a) {
                    a.Eb.forEach(function(c) {
                        c =
                            b({ zi: c.key, url: a.url, wf: a.wf, ia: a.o.ia, le: a.le });
                        u.Gs[c] && delete u.Gs[c]
                    })
                },
                set: function(a, c) {
                    a.Cf && a.Cf !== u.data.AK && (l(a.Cf), e(), c && c({ code: 2 }));
                    !a.qd && a.Ic ? a.Ic.forEach(function(c) {
                        var d = b({ zi: c.zi, url: a.url, wf: a.wf, ia: a.o.ia, le: a.le });
                        if (q.yi || r.ja(v, d)) {
                            var e = u.Gs[d] || {};
                            e[c.Sc] = c.Aa;
                            u.Gs[d] = e
                        }
                    }) : a.data && a.data.forEach(function(c) { var d = b({ zi: c.key, url: a.url, wf: a.wf, ia: a.o.ia, le: a.le }); if (q.yi || r.ja(v, d)) u.Gs[d] = c.data });
                    u.data.tf = { "x-vd-v": a["x-vd-v"], tv: a.tv, bgc: a.bgc }
                },
                flush: function() {
                    var a = !0;
                    return function() {
                        var b = this;
                        if (a) {
                            if (Object.keys(u.data.Xm).length)
                                for (var c in u.data.Xm) u.data.Xm.hasOwnProperty(c) && !r.ja(v, c) && delete u.data.Xm[c];
                            q.yi ? s.count(function(a, c) { a || (c !== u.data.keys.length ? (u.data.keys.length && (u.data.keys = []), f(function() { b.EF(!0) })) : b.EF(!0)) }) : b.EF(!0);
                            a = !1
                        } else b.EF()
                    }
                }(),
                EF: function() {
                    var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : !1,
                        b = {},
                        d = [],
                        f = Object.keys(u.Gs),
                        k = [];
                    f.length ? (f.forEach(function(a) {
                        var c = u.Gs[a];
                        a.split("|").pop().split(",").every(function(a) {
                            return "limg" ===
                                a ? !0 : c && void 0 !== c[a]
                        }) ? (r.ja(u.data.keys, a) || (k.push(a), d.push({ tileKey: a, data: c })), r.ja(v, a) && void 0 === u.data.Xm[a] && (u.data.Xm[a] = c)) : b[a] = c
                    }), d.length && (q.yi ? s.add(d, function(a) { a ? 3 !== a.code ? e() : q.yi = !1 : (u.data.keys = u.data.keys.concat(k), x.setItem(u.key, u.data, !0), c()) }) : x.setItem(u.key, u.data, !0)), u.Gs = b) : (a && x.setItem(u.key, u.data, !0), c())
                }
            };
            h()
        }
    })();
    g.T = g.aa.extend({
        r: function(a, b, c) {
            var d = parseFloat(b),
                e = parseFloat(a);
            if (isNaN(a) || isNaN(b)) throw "Invalid Object: LngLat(" + e + ", " + d + ")";
            !0 !== c && (d = Math.max(Math.min(d, 90), -90), e = (e + 180) % 360 + (-180 > e || 180 === e ? 180 : -180));
            this.P = d;
            this.Q = e
        },
        AQ: function() { return g.a.lc(this.Q, 6) },
        wQ: function() { return g.a.lc(this.P, 6) },
        add: function(a, b) { return new g.T(this.Q + a.Q, this.P + a.P, b) },
        $a: function(a, b) { return new g.T(this.Q - a.Q, this.P - a.P, b) },
        dd: function(a, b) { return new g.T(this.Q / a, this.P / a, b) },
        Gd: function(a,
            b) { return new g.T(this.Q * a, this.P * a, b) },
        re: function(a) { return g.Dq.distance(this, a) },
        offset: function(a, b) {
            if (isNaN(a) || isNaN(b)) return !1;
            var c = 2 * Math.asin(Math.sin(Math.round(a) / 12756274) / Math.cos(this.P * Math.PI / 180)),
                c = this.Q + 180 * c / Math.PI,
                d = 2 * Math.asin(Math.round(b) / 12756274);
            return new g.T(c, this.P + 180 * d / Math.PI)
        },
        cb: function(a) { a = g.a.Ia(a); return a instanceof g.T ? 1E-9 >= Math.max(Math.abs(this.P - a.P), Math.abs(this.Q - a.Q)) : !1 },
        toString: function() { return g.a.lc(this.Q, 6) + "," + g.a.lc(this.P, 6) },
        dl: function() {
            return [this.Q,
                this.P
            ]
        },
        jb: function() {
            var a = this.controlPoints,
                b = new g.T(this.Q, this.P);
            a && (b.controlPoints = [].concat(a));
            return b
        }
    });
    g.T.Yoa = function(a, b, c) {
        c = c + 1 || Math.round(Math.abs(a.Q - b.Q));
        if (!c || 0.001 > Math.abs(a.Q - b.Q)) return [];
        var d = [],
            e = Math.PI,
            f = g.om.gu,
            h = g.om.lua,
            k = Math.asin,
            l = Math.sqrt,
            m = Math.sin,
            n = Math.pow,
            p = Math.cos,
            q = Math.atan2,
            r = a.P * f;
        a = a.Q * f;
        var s = b.P * f;
        b = b.Q * f;
        for (var k = 2 * k(l(n(m((r - s) / 2), 2) + p(r) * p(s) * n(m((a - b) / 2), 2))), u, v, x, t, f = 1; f < c; f += 1) u = 1 / c * f, v = m((1 - u) * k) / m(k), x = m(u * k) / m(k), u = v * p(r) * p(a) + x * p(s) * p(b), t = v * p(r) * m(a) + x * p(s) * m(b), v = v * m(r) + x * m(s), v = q(v, l(n(u, 2) + n(t, 2))), u = q(t, u), b > a ? (u < a && (u += 2 * e), u > b && (u -= 2 * e)) :
            (u > a && (u -= 2 * e), u < b && (u += 2 * e)), d.push(new g.T(u * h, v * h, !0));
        return d
    };
    g.T.Mb({ AQ: "getLng", wQ: "getLat", add: "add", $a: "subtract", dd: "divideBy", Gd: "multiplyBy", re: "distance", offset: "offset", cb: "equals", toString: "toString" });
    g.me = g.aa.extend({
        r: function() {
            this.CLASS_NAME = "AMap.Bounds";
            var a = null,
                b = null;
            if (1 === arguments.length && arguments[0] instanceof Array) a = new g.T(arguments[0][0], arguments[0][1], !0), b = new g.T(arguments[0][2], arguments[0][3], !0);
            else if (2 === arguments.length) a = g.a.Ia(arguments[0]), b = g.a.Ia(arguments[1]);
            else if (4 === arguments.length) a = new g.T(arguments[0], arguments[1]), b = new g.T(arguments[2], arguments[3]);
            else if (0 === arguments.length) a = new g.T(-180, -90), b = new g.T(180, 90);
            else throw "Invalid Object: Bounds(" +
                arguments.join(",") + ")";
            this.xc = a;
            this.nc = b
        },
        Au: function() { return this.xc },
        cy: function() { return this.nc },
        Oj: function() { return new g.T(this.xc.Q, this.nc.P, !0) },
        lo: function() { return new g.T(this.nc.Q, this.xc.P, !0) },
        contains: function(a) {
            var b = this.xc,
                c = this.nc,
                d;
            if (a instanceof g.No) return this.XT().contains(a);
            a instanceof g.me ? (d = a.xc, a = a.nc) : d = a = g.a.Ia(a);
            var e = d.Q,
                f = b.Q,
                h = a.Q,
                k = c.Q;
            f > k && (k += 360, 0 > e && (e += 360), 0 > h && (h += 360));
            return d.P >= b.P && a.P <= c.P && e >= f && h <= k
        },
        Gg: function(a) {
            var b = this.xc,
                c = this.nc,
                d = a.xc;
            a = a.nc;
            var e = a.Q >= b.Q && d.Q <= c.Q;
            return a.P >= b.P && d.P <= c.P && e
        },
        ki: function() { return new g.T(this.xc.Q > this.nc.Q ? (this.xc.Q + this.nc.Q + 360) / 2 % 360 : (this.xc.Q + this.nc.Q) / 2, (this.xc.P + this.nc.P) / 2) },
        extend: function(a) {
            this.xc.Q = Math.min(this.xc.Q, a.Q);
            this.xc.P = Math.min(this.xc.P, a.P);
            this.nc.Q = Math.max(this.nc.Q, a.Q);
            this.nc.P = Math.max(this.nc.P, a.P);
            return this
        },
        zxa: function(a) { return this.extend(a.xc).extend(a.nc) },
        toString: function() { return this.xc.toString() + ";" + this.nc.toString() },
        jb: function() {
            return new g.me(this.xc.jb(),
                this.nc.jb())
        },
        cb: function(a) { return a instanceof g.me ? this.xc.cb(a.xc) && this.nc.cb(a.nc) : !1 },
        hj: function() { return Math.abs(this.nc.Q - this.xc.Q) },
        fj: function() { return Math.abs(this.xc.P - this.nc.P) },
        XT: function(a) {
            var b = [this.Au(), this.lo(), this.cy(), this.Oj()];
            a && b.push(this.Au());
            return new g.No(b)
        },
        Iwa: function(a) { return new g.Ff(a.ec(this.Oj(), 20), a.ec(this.lo(), 20)) },
        sQ: function(a, b) { return this.XT(b).sQ(a) },
        pQ: function(a) { return this.Iwa(a).ki() }
    });
    g.me.Mb({ Au: "getSouthWest", cy: "getNorthEast", Oj: "getNorthWest", lo: "getSouthEast", contains: "contains", Gg: "intersects", ki: "getCenter", extend: "extend" });
    g.H = g.aa.extend({
        r: function(a, b, c) {
            if (isNaN(a) || isNaN(b)) throw "Invalid Object: Pixel(" + a + ", " + b + ")";
            this.x = c ? Math.round(a) : Number(a);
            this.y = c ? Math.round(b) : Number(b)
        },
        hf: function() { return this.x },
        ee: function() { return this.y },
        add: function(a, b) { return new g.H(this.x + a.x, this.y + a.y, b) },
        $a: function(a, b) { return new g.H(this.x - a.x, this.y - a.y, b) },
        dd: function(a, b) { return new g.H(this.x / a, this.y / a, b) },
        Gd: function(a, b) { return new g.H(this.x * a, this.y * a, b) },
        re: function(a) {
            var b = a.x - this.x;
            a = a.y - this.y;
            return Math.sqrt(b *
                b + a * a)
        },
        floor: function() { return new g.H(Math.floor(this.x), Math.floor(this.y)) },
        round: function() { return new g.H(this.x, this.y, !0) },
        cb: function(a) { return a instanceof g.H && this.x === a.x && this.y === a.y },
        jb: function(a) { return new g.H(this.x, this.y, a) },
        toString: function() { return this.x + "," + this.y },
        dl: function() { return [this.x, this.y] },
        length: function() { return Math.sqrt(this.x * this.x + this.y * this.y) },
        direction: function() {
            var a = this.x,
                b = this.y;
            if (0 === a && 0 === b) return null;
            if (0 === a) return 0 < b ? 90 : 270;
            var c = 180 *
                Math.atan(b / a) / Math.PI;
            return 0 > a && 0 < b ? c + 180 : 0 > a && 0 > b ? c + 180 : 0 < a && 0 > b ? c + 360 : c
        },
        cu: function(a) {
            var b = this.length(),
                c = a.length();
            return b && c ? 180 * Math.acos((this.x * a.x + this.y * a.y) / c / b) / Math.PI : null
        },
        Kma: function(a) {
            var b = this.length(),
                c = a.length();
            return b && c ? (this.x * a.x + this.y * a.y) / c / b : null
        },
        toFixed: function(a) {
            this.x = g.a.lc(this.x, a);
            this.y = g.a.lc(this.y, a);
            return this
        }
    });
    g.H.Mb({ hf: "getX", ee: "getY", add: "add", $a: "subtract", dd: "divideBy", Gd: "multiplyBy", re: "distance", cb: "equals", toString: "toString" });
    g.ud = g.aa.extend({
        r: function(a, b, c) {
            if (isNaN(a) || isNaN(b)) throw "Invalid Object: Size(" + a + ", " + b + ")";
            this.width = c ? Math.round(a) : Number(a);
            this.height = c ? Math.round(b) : Number(b)
        },
        jb: function() { return new g.ud(this.width, this.height) },
        hj: function() { return this.width },
        fj: function() { return this.height },
        $D: function() { return new g.H(this.hj(), this.fj()) },
        contains: function(a) { return Math.abs(a.x) <= Math.abs(this.width) && Math.abs(a.y) <= Math.abs(this.height) },
        cb: function(a) {
            return a instanceof g.ud && this.width ===
                a.width && this.height === a.height
        },
        toString: function() { return this.hj() + "," + this.fj() }
    });
    g.ud.Mb({ hj: "getWidth", fj: "getHeight", toString: "toString" });
    g.No = g.aa.extend({
        r: function(a) {
            this.CLASS_NAME = "AMap.ArrayBounds";
            a = g.a.Ia(a);
            this.path = [];
            for (var b = 0; b < a.length; b += 1) this.path.push([a[b].Q, a[b].P]);
            this.bounds = this.Ud = a
        },
        contains: function(a, b) {
            if (a instanceof g.No) return g.Dq.isRingInRing(a.path, this.path);
            a instanceof g.H ? a = [a.x, a.y] : a instanceof g.T && (a = [a.Q, a.P]);
            return g.zd.Nd(a, this.path, b)
        },
        toBounds: function() { for (var a = new g.me(180, 90, -180, -90), b = this.Ud.length - 1; 0 <= b; b -= 1) a.extend(this.Ud[b]); return a },
        sQ: function(a) {
            for (var b = [], c = 0; c <
                this.path.length; c += 1) b[c] = a.ec(this.path[c], 20);
            return b
        },
        pQ: function(a) { return this.toBounds().pQ(a) },
        ki: function() { return this.toBounds().ki() }
    });
    g.No.Mb({ contains: "contains", ki: "getCenter" });
    g.D9 = g.No.extend({
        r: function(a) {
            this.CLASS_NAME = "AMap.CoordsBounds";
            this.path = a;
            if (a[0] instanceof g.H) { this.path = []; for (var b = 0; b < a.length; b += 1) this.path.push([a[b].x, a[b].y]) }
            this.bounds = this.Ud = a
        }
    });
    g.Ff = g.aa.extend({
        r: function() {
            if (2 === arguments.length) this.Xb = arguments[0], this.Fd = arguments[1];
            else if (1 === arguments.length && arguments[0] instanceof Array || 4 === arguments.length) {
                var a = arguments[0] instanceof Array ? arguments[0] : arguments;
                this.Xb = new g.H(a[0], a[1]);
                this.Fd = new g.H(a[2], a[3])
            } else throw "Invalid Object: PixelBounds(" + arguments.join(",") + ")";
        },
        ki: function(a) { return new g.H((this.Xb.x + this.Fd.x) / 2, (this.Xb.y + this.Fd.y) / 2, a) },
        contains: function(a) {
            var b;
            a instanceof g.Ff ? (b = a.Xb, a = a.Fd) :
                b = a;
            return b.x > this.Xb.x && a.x < this.Fd.x && b.y > this.Xb.y && a.y < this.Fd.y
        },
        hj: function() { return this.Fd.x - this.Xb.x },
        fj: function() { return this.Fd.y - this.Xb.y },
        Gg: function(a, b) {
            b || 0 === b || (b = 20);
            var c = this.Xb,
                d = this.Fd,
                e = a.Xb,
                f = a.Fd,
                h = f.y >= c.y - b && e.y <= d.y + b;
            return f.x >= c.x - b && e.x <= d.x + b && h
        },
        toString: function() { return this.Xb + ";" + this.Fd },
        jb: function() { return new g.Ff(this.Xb.jb(), this.Fd.jb()) }
    });
    g.I = {};
    g.I.NO = function(a) { for (var b = [Infinity, Infinity, -Infinity, -Infinity], c = 0, d = a.length; c < d; c += 1) g.I.NH(b, a[c]); return b };
    g.I.R0 = function(a, b, c) {
        var d = Math.min.apply(null, a);
        a = Math.max.apply(null, a);
        var e = Math.min.apply(null, b);
        b = Math.max.apply(null, b);
        return g.I.Gma(d, a, e, b, c)
    };
    g.I.buffer = function(a, b) {
        a[0] -= b;
        a[1] -= b;
        a[2] += b;
        a[3] += b
    };
    g.I.jb = function(a) { return a.slice() };
    g.I.Nd = function(a, b) { return a[0] <= b[0] && b[0] <= a[2] && a[1] <= b[1] && b[1] <= a[3] };
    g.I.C1 = function(a, b) { return a[0] <= b[0] && b[2] <= a[2] && a[1] <= b[1] && b[3] <= a[3] };
    g.I.mBa = function() { return [Infinity, Infinity, -Infinity, -Infinity] };
    g.I.Gma = function(a, b, c, d, e) { return "undefined" !== typeof e ? (e[0] = a, e[2] = b, e[1] = c, e[3] = d, e) : [a, c, b, d] };
    g.I.empty = function(a) {
        a[0] = a[1] = Infinity;
        a[2] = a[3] = -Infinity;
        return a
    };
    g.I.cb = function(a, b) { return a[0] === b[0] && a[2] === b[2] && a[1] === b[1] && a[3] === b[3] };
    g.I.extend = function(a, b) {
        b[0] < a[0] && (a[0] = b[0]);
        b[2] > a[2] && (a[2] = b[2]);
        b[1] < a[1] && (a[1] = b[1]);
        b[3] > a[3] && (a[3] = b[3])
    };
    g.I.NH = function(a, b) {
        b[0] < a[0] && (a[0] = b[0]);
        b[0] > a[2] && (a[2] = b[0]);
        b[1] < a[1] && (a[1] = b[1]);
        b[1] > a[3] && (a[3] = b[1])
    };
    g.I.gCa = function(a) { return [a[0], a[1]] };
    g.I.hCa = function(a) { return [a[2], a[1]] };
    g.I.ki = function(a) { return [(a[0] + a[2]) / 2, (a[1] + a[3]) / 2] };
    g.I.tCa = function(a, b, c, d, e) {
        var f = b * d[0] / 2;
        d = b * d[1] / 2;
        b = Math.cos(c);
        c = Math.sin(c);
        f = [-f, -f, f, f];
        d = [-d, d, -d, d];
        var h, k, l;
        for (h = 0; 4 > h; h += 1) k = f[h], l = d[h], f[h] = a[0] + k * b - l * c, d[h] = a[1] + k * c + l * b;
        return g.I.R0(f, d, e)
    };
    g.I.fj = function(a) { return a[3] - a[1] };
    g.I.GCa = function(a) { return [a[2] - a[0], a[3] - a[1]] };
    g.I.KCa = function(a) { return [a[0], a[3]] };
    g.I.LCa = function(a) { return [a[2], a[3]] };
    g.I.hj = function(a) { return a[2] - a[0] };
    g.I.Gg = function(a, b) { return a[0] <= b[2] && a[2] >= b[0] && a[1] <= b[3] && a[3] >= b[1] };
    g.I.Pk = function(a) { return a[2] < a[0] || a[3] < a[1] };
    g.I.normalize = function(a, b) { return [(b[0] - a[0]) / (a[2] - a[0]), (b[1] - a[1]) / (a[3] - a[1])] };
    g.I.kFa = function(a, b) {
        var c = (a[2] - a[0]) / 2 * (b - 1),
            d = (a[3] - a[1]) / 2 * (b - 1);
        a[0] -= c;
        a[2] += c;
        a[1] -= d;
        a[3] += d
    };
    g.I.touches = function(a, b) { return g.I.Gg(a, b) && (a[0] === b[2] || a[2] === b[0] || a[1] === b[3] || a[3] === b[1]) };
    g.I.transform = function(a, b, c) {
        a = [a[0], a[1], a[0], a[3], a[2], a[1], a[2], a[3]];
        b(a, a, 2);
        return g.I.R0([a[0], a[2], a[4], a[6]], [a[1], a[3], a[5], a[7]], c)
    };
    g.me.zb({
        r: function() {
            var a = g.me.prototype.r;
            return function() {
                a.apply(this, arguments);
                this.southwest = this.xc;
                this.northeast = this.nc
            }
        }(),
        extend: function() {
            var a = g.me.prototype.extend;
            return function() {
                a.apply(this, arguments);
                this.xc.lng = this.xc.Q;
                this.xc.lat = this.xc.P;
                this.nc.lng = this.nc.Q;
                this.nc.lat = this.nc.P;
                return this
            }
        }()
    });
    g.T.zb({
        r: function() {
            var a = g.T.prototype.r;
            return function() {
                a.apply(this, arguments);
                this.lng = parseFloat(this.Q.toFixed(6));
                this.lat = parseFloat(this.P.toFixed(6))
            }
        }()
    });
    g.WE = g.aa.extend({
        r: function(a, b, c, d) {
            this.UV = a;
            this.jW = b;
            this.xW = c;
            this.VW = d
        },
        transform: function(a, b) { return this.d0(a.jb(), b) },
        d0: function(a, b) {
            b = b || 1;
            a.x = b * (this.UV * a.x + this.jW);
            a.y = b * (this.xW * a.y + this.VW);
            return a
        },
        Bxa: function(a, b) { b = b || 1; return new g.H((a.x / b - this.jW) / this.UV, (a.y / b - this.VW) / this.xW) }
    });
    g.To = g.aa.extend({
        r: function(a) {
            this.UK = a.MAX_LATITUDE || 85.0511287798;
            a.project && a.unproject && (this.ec = a.project, this.Mh = a.unproject)
        }
    });
    g.To.jV = { ec: function(a) { return new g.H(a.Q, a.P) }, Mh: function(a, b) { return new g.T(a.x, a.y, b) } };
    g.To.K$ = new g.To({
        MAX_LATITUDE: 85.0511287798,
        project: function(a) {
            var b = Math.PI / 180,
                c = this.UK,
                c = Math.max(Math.min(c, a.P), -c);
            a = a.Q * b;
            b = Math.log(Math.tan(Math.PI / 4 + c * b / 2));
            return new g.H(a, b, !1)
        },
        unproject: function(a, b) { var c = 180 / Math.PI; return new g.T(a.x * c, (2 * Math.atan(Math.exp(a.y)) - Math.PI / 2) * c, b) }
    });
    g.To.oV = {
        UK: 85.0840591556,
        fL: 6356752.3142,
        eL: 6378137,
        ec: function(a) {
            var b = Math.PI / 180,
                c = this.UK,
                d = Math.max(Math.min(c, a.P), -c),
                e = this.eL,
                c = this.fL;
            a = a.Q * b * e;
            b *= d;
            e = c / e;
            e = Math.sqrt(1 - e * e);
            d = e * Math.sin(b);
            d = Math.pow((1 - d) / (1 + d), 0.5 * e);
            b = Math.tan(0.5 * (0.5 * Math.PI - b)) / d;
            b = -c * Math.log(b);
            return new g.H(a, b)
        },
        Mh: function(a, b) {
            for (var c = 180 / Math.PI, d = this.eL, e = this.fL, f = a.x * c / d, d = e / d, d = Math.sqrt(1 - d * d), e = Math.exp(-a.y / e), h = Math.PI / 2 - 2 * Math.atan(e), k = 15, l = 0.1; 1E-7 < Math.abs(l) && (k -= 1, 0 < k);) l = d * Math.sin(h),
                l = Math.PI / 2 - 2 * Math.atan(e * Math.pow((1 - l) / (1 + l), 0.5 * d)) - h, h += l;
            return new g.T(f, h * c, b)
        }
    };
    g.Ph = {};
    g.Ph.zE = {
        XC: function(a, b) {
            var c = this.xf.ec(a),
                d = this.scale(b);
            return this.dE.d0(c, d)
        },
        xD: function(a, b, c) {
            b = this.scale(b);
            a = this.dE.Bxa(a, b);
            return this.xf.Mh(a, c)
        },
        ec: function(a) { return this.xf.ec(a) },
        scale: function(a) { return 256 << a },
        Fp: function(a) { return 12756274 * Math.PI / (256 * Math.pow(2, a)) }
    };
    g.Ph.LK = g.extend({}, g.Ph.zE, { code: "EPSG:3857", xf: g.To.K$, dE: new g.WE(0.5 / Math.PI, 0.5, -0.5 / Math.PI, 0.5), ec: function(a) { return this.xf.ec(a).Gd(6378137) } });
    g.Ph.UU = g.extend({}, g.Ph.zE, { code: "EPSG:3395", xf: g.To.oV, dE: function() { var a = g.To.oV; return new g.WE(0.5 / (Math.PI * a.eL), 0.5, -0.5 / (Math.PI * a.fL), 0.5) }() });
    g.Ph.VU = g.extend({}, g.Ph.zE, { code: "EPSG:4326", xf: g.To.jV, dE: new g.WE(1 / 360, 0.5, -1 / 360, 0.25) });
    g.Ph.cza = g.extend({}, g.Ph.zE, { xf: g.To.jV, dE: new g.WE(1, 0, 1, 0) });
    g.VI = {
        ec: function(a, b) { a = g.a.Ia(a); return this.$i.XC(a, b || this.get("zoom")) },
        Mh: function(a, b, c) { return this.$i.xD(a, b || this.get("zoom"), c) },
        tra: function(a, b) { return this.ec(a, b) },
        dCa: function(a, b) { return this.Mh(a, b) },
        sp: function(a, b, c) {
            g.c.add(this, "containerToLngLat");
            var d = this.get("size").$D().dd(2);
            if (a.cb(d) && !c) return this.get("center");
            a = this.kg(a, b, c);
            return this.Qd(a)
        },
        Yr: function(a, b) {
            g.c.add(this, "lngLatToContainer");
            var c = 0;
            b && (c = "string" === typeof b ? Math.round(parseFloat(b) / 0.14929107086948487) :
                b);
            var d = this.Ab(a);
            return this.Ae(d, null, c)
        },
        Ab: function(a) { a = g.a.Ia(a); return this.ec(a, 20) },
        Qd: function(a) { return a ? this.Mh(a, 20) : a },
        RI: function(a) { a = g.a.Ia(a); return this.ec(a, 20).$a(g.a.Zb) },
        R4: function(a, b) {
            b || (a = g.a.Ia(a));
            var c = [],
                d = !1;
            void 0 === a[0].length && (d = !0);
            for (var c = [], e = 0, f = a.length; e < f; e += 1)
                if (d) {
                    var h = this.ec(a[e], 20).$a(g.a.Zb);
                    c[e] = [h.x, h.y]
                } else c[e] = this.R4(a[e], !0);
            return c
        },
        voa: function(a) { return this.Mh(a.add(g.a.Zb), 20) },
        eCa: function(a) { return this.Ae(a.add(g.a.Zb)) },
        mCa: function(a) {
            return a ?
                this.ec(this.get("center"), a) : this.get("centerPixel")
        },
        Lza: function(a) { return (new g.H(a.x + 2.0037508342789244E7, 2.0037508342789244E7 - a.y)).dd(0.14929107086948487) },
        S5: function(a) { return new g.H(0.14929107086948487 * a.x - 2.0037508342789244E7, 2.0037508342789244E7 - 0.14929107086948487 * a.y) }
    };
    A.ZE = g.aa.extend({
        ja: [g.sa, g.Pe],
        B: { center: new g.T(116.397128, 39.916527), zoom: 13, rotation: 0, crs: "EPSG3857" },
        r: function(a) {
            this.CLASS_NAME = "AMap.View2D";
            g.c.ya(this, a);
            a = a || {};
            a.center && (a.center = g.a.Ia(a.center));
            this.B = a
        }
    });
    A.Jb = g.aa.extend({
        ja: [g.sa, g.Pe, g.VI],
        B: {
            features: "all",
            showLabel: !0,
            dragEnable: !0,
            showIndoorMap: g.l.Z ? !1 : !0,
            lang: "zh_cn",
            keyboardEnable: !0,
            doubleClickZoom: !0,
            gridMapForeign: !1,
            scrollWheel: !0,
            zoomEnable: !0,
            jogEnable: !0,
            continuousZoomEnable: !0,
            resizeEnable: !1,
            animateEnable: !0,
            rotateEnable: !1,
            labelzIndex: 99,
            showFog: !0,
            touchZoom: !0,
            zooms: [3, g.l.Z ? g.l.Mc ? 19 : 20 : 18],
            defaultCursor: "",
            limitBounds: null,
            logoUrl: g.A.yb + "/theme/v1.3/logo@1x.png",
            logoUrlRetina: g.A.yb + "/theme/v1.3/logo@2x.png",
            copyright: "\x3c!--v1.4.13--\x3e &copy " +
                (new Date).getFullYear() + " AutoNavi ",
            isHotspot: !g.l.Z,
            baseRender: g.l.J0,
            overlayRender: g.l.mta,
            mapStyle: "normal",
            showBuildingBlock: g.l.wf,
            crs: "EPSG3857",
            rotation: 0,
            pitch: 0,
            yaw: 0,
            scale: 1,
            center: new g.T(116.397128, 39.916527),
            zoom: 13,
            detectRetina: !0,
            pitchEnable: !1,
            buildingAnimation: !1,
            maxPitch: 83,
            turboMode: !0,
            preloadMode: !0,
            workerMode: !0
        },
        poiOnAMAP: function(a) {
            g.c.add(this, "poiOnAMAP");
            var b = {},
                c = g.a.Ia(a.location);
            b.id = a.id;
            c && (b.y = c.P, b.x = c.Q);
            b.name = a.name;
            b.address = a.address;
            g.Qh.Es(g.Qh.a3(b))
        },
        detailOnAMAP: function(a) {
            g.c.add(this, "detailOnAMAP");
            var b = {},
                c = g.a.Ia(a.location);
            b.id = a.id;
            c && (b.y = c.P, b.x = c.Q);
            b.name = a.name;
            g.Qh.Es(g.Qh.Y2(b))
        },
        setLabelzIndex: function(a) { g.c.add(this, "setLabelzIndex"); return this.set("labelzIndex", a) },
        getLabelzIndex: function() { return this.get("labelzIndex", null, !0) },
        setMapStyle: function(a) {
            g.c.add(this, "setMapStyle"); - 1 === a.indexOf("amap://styles/") ? (this.set("styleUrl", "", !0), this.set("mapStyle", a)) : this.set("styleUrl", a);
            this.UR()
        },
        getMapStyle: function() {
            return this.get("styleUrl") ||
                this.get("mapStyle", null, !0)
        },
        getFeatures: function() { return this.get("features", null, !0) },
        setFeatures: function(a) {
            g.c.add(this, "setFeatures");
            this.set("features", a)
        },
        setLang: function(a) { g.c.add(this, "setLang", a); "en" !== a && "zh_cn" !== a && "zh_en" !== a || a === this.get("lang", null, !0) || (this.set("lang", a), this.Sj && this.Sj.W6(this)) },
        getLang: function() { return this.get("lang", null, !0) },
        setCity: function(a, b) {
            g.c.add(this, "setCity");
            var c = this;
            (new g.fb.vb(g.A.Rd + "/v3/config/district?subdistrict=0&extensions=all&key=" +
                g.A.key + "&s=rsv3&output=json&keywords=" + a, { callback: "callback" })).g("complete", function(d) {
                var e = d.districts;
                if (e && e.length) {
                    d = e[0];
                    /[^\w]+/.test(a) && (e = g.a.find(e, function(b) { return b.name === a })) && e !== d && (d = e);
                    try {
                        var f = d.center.split(","),
                            h;
                        switch (d.level) {
                            case "city":
                                h = 10;
                                break;
                            case "province":
                                h = 7;
                                break;
                            case "district":
                                h = 12;
                                break;
                            case "country":
                                h = 4;
                                break;
                            default:
                                h = 12
                        } - 1 !== d.name.indexOf("\u5e02") && (h = 10);
                        c.C = !0;
                        c.setZoomAndCenter(h, new g.T(f[0], f[1]), !0);
                        c.C = !1;
                        b && b.call(c, f, h)
                    } catch (k) {}
                }
            }, this)
        },
        getScreenShot: function(a, b) { g.c.add(this, "getScreenShot"); return this.map && g.l.Nk ? this.map.i3(a, b) : "" },
        getCity: function(a, b) {
            g.c.add(this, "getCity");
            var c = g.A.Rd + "/v3/geocode/regeo?&extensions=&&key=" + g.A.key + "&s=rsv3&output=json&location=" + (b || this.get("center", null, !0));
            (new g.fb.vb(c, { callback: "callback", wx: !0, Sc: "REGEO" })).g("complete", function(b) {
                b = b.regeocode.addressComponent;
                a({
                    province: b.province,
                    city: b.city instanceof Array ? "" : b.city,
                    citycode: b.citycode instanceof Array ? "" : b.citycode,
                    district: b.district instanceof
                    Array ? "" : b.district
                })
            }, this)
        },
        r: function(a, b) {
            b = g.extend({}, b);
            this.id = g.a.ub(this);
            this.CLASS_NAME = "AMap.Map";
            g.c.ya(this, b);
            this.C = !0;
            b = b || {};
            b.mapStyle && -1 !== b.mapStyle.indexOf("amap://styles/") ? (b.styleUrl = b.mapStyle, delete b.mapStyle) : b.styleUrl = "amap://styles/normal";
            b.bgColor && g.extend(g.A.pe, b.bgColor);
            b.maxPitch && (b.maxPitch = Math.min(this.B.maxPitch, Math.max(b.maxPitch, 0)));
            b.pitch && (b.pitch = Math.min(b.maxPitch || this.B.maxPitch, Math.max(b.pitch, 0)));
            "3D" !== b.viewMode && (b.pitch = 0);
            g.A.jr =
                b.buildingColor || null;
            b.mobile && (g.l.Z = !0);
            b.noPoi && (g.A.wsa = !0);
            b.editEnable && (b.nolimg = !0, b.showIndoorMap = !1);
            void 0 !== b.nolimg && (b.nolimg_param = b.nolimg);
            "3D" === b.viewMode && g.l.mq && void 0 === b.showBuildingBlock && !0 === b.showBuildingBlock;
            this.Mp = !!b.enableSocket;
            b.server && (g.A.Rd = b.server);
            b.vdataUrl && (g.A.zK = b.vdataUrl);
            if ("string" === typeof a) { if (a = this.J = document.getElementById(a), !a) return } else "DIV" === a.tagName && (this.J = a);
            if (this.J.BL) {
                var c = this.J.BL;
                c.C = !0;
                c.destroy();
                c.C = !1
            }
            g.oe.Ze.start({
                id: this.id,
                J: this.J
            });
            this.J.BL = this;
            var c = this.B.zooms[1],
                d = this.B.zooms[0];
            b.zooms ? (b.zooms[0] = Math.max(d, b.zooms[0]), !0 === b.expandZoomRange && (c = g.l.Z ? g.l.Mc ? 19 : 20 : 20), b.zooms[1] = Math.min(c, b.zooms[1])) : b.zooms = [d, c];
            b.forceZooms && (b.zooms = b.forceZooms);
            b = this.Ala(b);
            c = this.getSize(!0);
            b.center && (b.center = g.a.Ia(b.center));
            this.$i = this.Hma(b.crs || this.B.crs, b.center || this.B.center);
            this.Jka(c, b);
            d = b.lang;
            "en" !== d && "zh_cn" !== d && "zh_en" !== d && (b.lang = "zh_cn");
            g.h.dg || (b.rotation = 0, b.pitch = 0, b.rotateEnable = !1);
            g.l.ER ? !1 !== b.workerMode && (A.Jb.ft ? (b.workerMode = !1, A.Jb.ft++) : A.Jb.ft = 1) : (b.workerMode = !1, b.preloadMode = !1);
            b.layers && (d = b.layers, delete b.layers, b.layers = d);
            b.baseRender = b.baseRender || g.l.J0;
            b.forceVector && (b.baseRender = g.l.wf ? "vw" : "v");
            b.disableVector && (b.baseRender = "d");
            "dom" === b.renderer && (b.baseRender = "d", b.overlayRender = "d");
            c = Math.max(c.width, c.height);
            g.l.ia && (c *= Math.min(2, window.devicePixelRatio || 1));
            "vw" === b.baseRender && c > g.l.Yra && (b.baseRender = "dv");
            "d" == b.baseRender && b.vectorMapForeign &&
                (b.vectorMapForeign = !1, b.gridMapForeign = !0);
            g.a.Db(this, b);
            this.We(this.B);
            "rotateEnable" in b || "3D" !== b.viewMode || !g.l.mq || this.set("rotateEnable", !0);
            "pitchEnable" in b || "3D" !== b.viewMode || !g.l.mq || this.set("pitchEnable", !0);
            c = this.get("zoom", null, !0);
            d = this.get("zooms");
            c > d[1] ? c = d[1] : c < d[0] && (c = d[0]);
            this.set("zoom", c);
            this.B.zoom = c;
            this.Jma(this.B);
            this.bP();
            var e = this;
            this.We({ overlays: [], infos: {}, controls: {} });
            var f = [];
            (b.gridMapForeign || b.vectorMapForeign) && f.push("gridmap");
            b.vectorMapForeign &&
                g.l.Zt && f.push("MVT", "vectorForeign");
            b.forceVector && (f.push("vectorlayer"), f.push("overlay"));
            "3D" === b.viewMode && g.l.mq && f.push("Map3D");
            g.l.Nk && (b.vectorMapForeign || b.mapStyle || b.nolimg) && f.push("labelcanvas");
            b.editEnable && f.push("edit");
            g.l.Nk && (f.push("AMap.IndoorMap"), -1 !== f.indexOf("Map3D") && f.push("AMap.IndoorMap3D"));
            this.ia = g.l.ia && this.get("detectRetina");
            this.Q8(b);
            this.C = !1;
            this.Kra(function() {
                g.qb.Kg(f, function() {
                    if (!e.get("destroy")) {
                        var b = new g.Jb(a, e);
                        if (g.Ke) {
                            var c = (g.Ke[0] || g.Ke).stylemaps["50001:1"].browserStyle[0].split("&");
                            b.hF = [c[0], c[4]]
                        }
                        b.Qe("zoom center centerCoords rotation yaw pitch resolution".split(" "), e.view, !0);
                        b.g("complete", function() { this.q("complete") }, e, !0);
                        b.$i = e.$i;
                        e.Qe(["zoomSlow", "panTo", "targetLevel", "render"], b);
                        b.Qe(["size", "bounds"], e);
                        e.loaded = !0;
                        e.q("coreMapCreated");
                        g.l.Nk && e.kka();
                        e.C = !0;
                        "3D" === e.view.type && (e.AmbientLight || (e.AmbientLight = new g.gw.KU([1, 1, 1], 0.9)), e.DirectionLight || (e.DirectionLight = new g.gw.TU([0, -1, 1], [1, 1, 1], 0.1)));
                        e.C = !1
                    }
                })
            })
        },
        Kra: function(a) {
            function b() {
                var a = AMap.anole,
                    b = {},
                    c = [],
                    d = 0,
                    e = void 0;
                if (a) {
                    for (var a = a.replace(/\?/g, ":").replace(/\//g, "&"), e = a.split(""), f = 0, q = e.length; f < q; f++) void 0 === b[e[f]] && (b[e[f]] = d++, c.push(e[f]));
                    c.reverse();
                    a = a.replace(/./g, function(a) { return c[b[a]] });
                    g.Ke = eval(a);
                    e = a = c = b = null;
                    delete AMap.anole
                }
            }
            if (g.l.ue || g.Ke) a();
            else {
                var c = !0;
                try {
                    var d = JSON.parse(localStorage.getItem("_AMap_anole"));
                    d && d.version === g.l.Cf && d.script ? eval(d.script) : c = !1
                } catch (e) { c = !1 }
                if (c) b(), a();
                else {
                    var f = document.createElement("script");
                    f.oBa = "anonymous";
                    f.id =
                        "amap_anole_js";
                    f.src = g.A.Bc + "://vdata.amap.com/style?v=" + g.A.cr + "&key=" + g.A.key + "&mapstyle=normal";
                    c = document;
                    (c.head || c.getElementsByTagName("head")[0] || c.body).appendChild(f);
                    f.onload = function() {
                        if (!g.Ke) {
                            if (g.l.Zr) try {
                                var c = { version: g.l.Cf, script: "AMap['anole']=" + JSON.stringify(AMap.anole) };
                                localStorage.setItem("_AMap_anole", JSON.stringify(c))
                            } catch (d) {}
                            b()
                        }
                        a();
                        f.parentNode.removeChild(f)
                    }
                }
            }
        },
        getViewMode_: function() { return this.view.type },
        Boa: function(a, b, c) {
            var d = new g.T(a[4], a[5]);
            if ((a = new g.me(a[0],
                    a[1], a[2], a[3])) && b && d) {
                for (var e = c[1]; e > c[0]; e -= 1) {
                    var f = this.ec(a.xc, e),
                        h = this.ec(a.nc, e);
                    if (Math.abs(h.x - f.x) < b.width && Math.abs(f.y - h.y) < b.height) break
                }
                return [d, Math.min(e + 1, c[1])]
            }
            return null
        },
        Jka: function(a, b) {
            if (!(b && b.center && b.zoom)) {
                var c = this.Boa(g.A.Ud, a, b.zooms);
                b.center = b.center || c && c[0];
                "number" !== typeof b.zoom && (b.zoom = c && c[1])
            }
        },
        Hma: function(a, b) {
            if (b instanceof g.T) {
                if ("string" === typeof a) {
                    switch (a) {
                        case "EPSG3395":
                            return g.Ph.UU;
                        case "EPSG4326":
                            return g.Ph.VU
                    }
                    return g.Ph.LK
                }
                if (a.pointToLngLat &&
                    a.lngLatToPoint) return { xD: a.pointToLngLat, XC: a.lngLatToPoint, Fp: a.getResolution };
                throw "illegal projection";
            }
            var c = this.get("zoom", null, !0);
            return { Fp: function(a) { return Math.pow(2, c - a) }, XC: function() {}, xD: function() {} }
        },
        Uva: function(a, b) {
            this.tw && this.tw.stop();
            var c = ["pitch", "rotation", "zoom", "center"],
                d = {},
                e = !1,
                f;
            for (f in a)
                if (a.hasOwnProperty(f) && -1 !== g.a.indexOf(c, f)) {
                    var h = this.get(f);
                    void 0 === h || h === a[f] || h.cb && h.cb(a[f]) || (d[f] = this.get(f), e = !0)
                }
            e && (this.tw = new g.wj(d, a, null, 0), this.tw.transition =
                function(a, c, e) {
                    e /= b || 300;
                    if (1 <= e) return c;
                    var f = {},
                        h;
                    for (h in d) d.hasOwnProperty(h) && (f[h] = "center" === h ? a[h].add(c[h].$a(a[h]).Gd(e)) : a[h] + (c[h] - a[h]) * e);
                    return f
                }, this.tw.Wp = function(b) { b === a && (this.tw.stop(), this.yd = null); for (var c in b) b.hasOwnProperty(c) && ("center" === c ? (this.C = !0, this.setCenter(b[c], !0), this.C = !1) : this.set(c, b[c])) }, this.tw.pn(this))
        },
        Jma: function(a) {
            "3D" === this.get("viewMode") && g.l.mq ? (this.set("baseRender", "vw"), this.view = new g.pL(this, a)) : this.view = new g.ZE(this, a);
            this.U3()
        },
        U3: function() { this.oi = "d" < this.get("baseRender") || "3D" === this.view.type },
        featuresChanged: function() { this.bP() },
        UR: function() {
            this.bP();
            this.DT()
        },
        DT: function() {
            if (this.Wl) {
                var a = !0;
                this.C = !0;
                var b = this.getMapStyle();
                if (!1 === this.get("showIndoorMap") || "normal" !== b && "amap://styles/normal" !== b) a = !1;
                b = this.getLayers();
                this.C = !1;
                for (var c in b) b.hasOwnProperty(c) && "AMap.IndoorMap" === b[c].CLASS_NAME && b[c] !== this.Wl && (a = !1);
                this.Wl.getMap() !== this && this.Wl.setMap(this);
                this.Wl.set("visible", a)
            }
        },
        bP: function() {
            this.Q8();
            if (this.view && "3D" !== this.view.type) {
                var a = this.get("baseRender");
                if (a && !("dv" < a)) {
                    var b = this.get("features", null, !0);
                    this.C = !0;
                    var c = this.getMapStyle();
                    this.C = !1;
                    var d = this.get("editEnable");
                    b && c && (g.l.Zt && (d || "all" !== b || "normal" !== c && "amap://styles/normal" !== c) ? (this.set("baseRender", "v"), this.qS = a) : this.qS && (this.set("baseRender", this.qS), this.qS = null));
                    this.U3()
                }
            }
        },
        kka: function() {
            var a = this;
            !a.Wl && a.J && (a.indoorMap = a.Wl = new AMap.IndoorMap({ innerLayer: !0 }), a.DT(), g.a.Qc(function() {
                a.q("indoor_create", { target: a });
                a.set("display")
            }))
        },
        layersChanged: function() {
            this.C = !0;
            var a = this.getLayers();
            this.dJ = this.C = !1;
            for (var b = 0; b < a.length; b += 1) a[b].C = !0, a[b].getMap() !== this && a[b].setMap(this), a[b].C = !1, a[b].dJ && (this.dJ = !0);
            this.DT()
        },
        getMapNumber: function() { if (this.map) return this.map.ED() },
        getAdcode: function() { g.c.add(this, "getAdcode"); return g.A.ika },
        Q8: function() {
            function a() {
                var a = !1;
                g.a.Qb(b.B.layers, function(b) { if (b.QF && b.constructor === A.o.ob) return a = !0, !1 }, b);
                if (g.a.ja(["d", "dv"], b.get("baseRender")) ||
                    !g.a.ja(["normal", "amap://styles/normal"], b.get("mapStyle")) || "3D" === b.get("viewMode") && 0 < b.get("pitch") || "all" !== b.get("features") || b.get("editEnable") || !b.get("turboMode")) a = !1;
                return a
            }
            if (!this.B6) {
                var b = this,
                    c = a(),
                    d = this.get("rasterLayer");
                if (d && !c) this.ak(d), this.set("rasterLayer", void 0);
                else if (!d && c && this.get("layers")) {
                    d = new A.o.ob({ innerLayer: !0, map: this, $j: !0, zIndex: 0 });
                    d.Oqa = !0;
                    if (this.B.layers) {
                        var e = null;
                        g.a.Qb(this.B.layers, function(a) {
                            a instanceof A.o.ob && a.QF && (null === e || a.get("zIndex") >
                                e.get("zIndex")) && (e = a)
                        });
                        e && d.Qe(["zIndex", "opacity", "zooms", "visible"], e)
                    }
                    this.set("rasterLayer", d, !0)
                }
            }
        },
        Ala: function(a) {
            a || (a = {});
            if (a.hasOwnProperty("defaultLayer")) {
                a.layers = [a.defaultLayer];
                var b = a.defaultLayer;
                b.DO = !0;
                this.set("defaultLayer", b, !0)
            }
            a.layers && 0 !== a.layers.length ? this.set("defaultLayer", a.layers[0], !0) : (b = new A.o.ob({ innerLayer: !0 }), a.layers = [b], b.DO = !0, this.set("defaultLayer", b, !0));
            if (b = a.view) b.B.rotation && (a.rotation = b.B.rotation), b.B.center && (a.center = b.B.center), b.B.zoom &&
                (a.zoom = Math.max(a.zooms[0], Math.min(a.zooms[1], b.B.zoom))), b.B.crs && (a.crs = b.B.crs);
            a.level && !a.zoom && (a.zoom = a.level);
            return a
        },
        setLimitBounds: function(a) {
            g.c.add(this, "setLimitBounds");
            a instanceof g.No && (a.C = !0, a = a.toBounds(), a.C = !1);
            a instanceof g.me || (a = null);
            this.set("limitBounds", a)
        },
        clearLimitBounds: function() {
            g.c.add(this, "clearLimitBounds");
            this.set("limitBounds", null)
        },
        getLimitBounds: function() { g.c.add(this, "getLimitBounds"); return this.get("limitBounds", null, !0) },
        YG: function(a) {
            var b =
                this.get("layers");
            0 <= g.a.indexOf(b, a) || (b.push(a), this.set("layers", b))
        },
        IB: function(a) {
            var b = this.get("overlays");
            0 <= g.a.indexOf(b, a) || (a instanceof A.w.un ? (this.get("overlays").push(a), this.Fx instanceof A.w.un && (this.Fx.C = !0, this.Fx.close(), this.Fx.C = !1), this.Fx = a, this.set("contextmenu", a, !0)) : (a instanceof A.w.Oe && (this.Xl instanceof A.w.Oe && this.Vy(this.Xl), this.Xl = a), this.get("overlays").push(a)), this.q("overlays"))
        },
        ak: function(a) {
            var b = this.get("layers"),
                c = g.a.indexOf(b, a);
            if (-1 !== c) {
                if (a.qY) {
                    for (c =
                        b.length; - 1 < --c;) {
                        var d = b[c];
                        d.nA !== a && d !== a || b.splice(c, 1)
                    }
                    a = b
                } else a.nA && a.nA.pja(a), a = g.a.ao(b, c);
                this.set("layers", a)
            }
        },
        getZooms: function() { return this.get("zooms", null, !0) },
        setZooms: function(a) { return this.set("zooms", a, !0) },
        Vy: function(a) {
            var b = this.get("overlays");
            this.set("overlays", g.a.ao(b, g.a.indexOf(b, a)))
        },
        getTileCoordByLngLat: function(a, b, c) {
            b = b || 256;
            this.C = !0;
            c = c || Math.round(this.getZoom());
            this.C = !1;
            a = this.ec(a, c);
            c = new g.Cq(c, Math.floor(a.x / b), Math.floor(a.y / b));
            c.qC = a.x % b;
            c.rC = a.y %
                b;
            return c
        },
        setZoom: function(a, b) {
            g.c.add(this, "setZoom");
            a = this.vC(a);
            var c = this.get("zooms");
            a > c[1] && (a = c[1]);
            a < c[0] && (a = c[0]);
            this.get("zoomEnable") && (b || !this.loaded ? (this.set("zoom", a), this.q("zoomstart"), this.q("zoomchange"), this.q("zoomend")) : this.set("zoomSlow", a))
        },
        getZoom: function() { g.c.add(this, "getZoom"); return this.vC(this.get("targetLevel") || this.get("zoom", null, !0)) },
        getCenter: function() { g.c.add(this, "getCenter"); return this.get("center", null, !0) },
        setCenter: function(a, b) {
            g.c.add(this,
                "setCenter");
            a = g.a.Ia(a);
            b || !this.loaded ? (this.q("movestart"), this.set("center", a), this.q("mapmove"), this.map ? this.map.q("moveend") : this.q("moveend")) : (this.C = !0, this.panTo(a), this.C = !1)
        },
        getCoordsBound: function() { return this.view.Ol() },
        getCoordsBoundByZoom: function(a) { return this.view.yoa(a) },
        setRotation: function() {
            var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : 0;
            g.c.add(this, "setRotation");
            !g.l.ue && this.get("rotateEnable") && this.set("rotation", a)
        },
        getRotation: function() {
            g.c.add(this,
                "getRotation");
            return this.get("rotation")
        },
        setPitch: function(a) {
            g.c.add(this, "setPitch");
            a = Math.min(this.get("maxPitch"), Math.max(a, 0));
            "3D" === this.view.type && this.get("pitchEnable") && this.set("pitch", a)
        },
        getPitch: function() { g.c.add(this, "getRotation"); return "3D" === this.view.type ? this.get("pitch") : 0 },
        getStatus: function() {
            g.c.add(this, "getStatus");
            for (var a = "isHotspot pitchEnable dragEnable zoomEnable keyboardEnable jogEnable doubleClickZoom scrollWheel resizeEnable touchZoom rotateEnable animateEnable".split(" "),
                    b = {}, c = 0; c < a.length; c += 1) b[a[c]] = this.get(a[c], null, !0);
            return b
        },
        setStatus: function(a) { g.c.add(this, "setStatus"); for (var b in a) a.hasOwnProperty(b) && -1 !== "isHotspot,pitchEnable,dragEnable,keyboardEnable,doubleClickZoom,scrollWheel,zoomEnable,jogEnable,continuousZoomEnable,resizeEnable,animateEnable,rotateEnable,touchZoom".indexOf(b) && this.set(b, a[b]) },
        getResolution: function(a, b) {
            g.c.add(this, "getResolution");
            var c = (a = g.a.Ia(a)) ? a.P : this.get("center", null, !0).P;
            return this.$i.Fp(b || this.get("zoom")) *
                Math.cos(c * Math.PI / 180)
        },
        getScale: function(a) {
            g.c.add(this, "getScale");
            this.C = !0;
            a = this.getResolution() * (a || 96) / 0.0254;
            this.C = !1;
            return a
        },
        getDefaultCursor: function() { g.c.add(this, "getDefaultCursor"); return this.get("defaultCursor", null, !0) || "url(" + g.A.yb + "/theme/v1.3/openhand.cur),default" },
        setDefaultCursor: function(a) { g.c.add(this, "setDefaultCursor"); return this.set("defaultCursor", a, !0) },
        zoomIn: function(a) {
            g.c.add(this, "zoomIn");
            this.C = !0;
            this.setZoom(this.getZoom() + 1, a);
            this.C = !1
        },
        zoomOut: function(a) {
            g.c.add(this,
                "zoomOut");
            this.C = !0;
            this.setZoom(this.getZoom() - 1, a);
            this.C = !1
        },
        vC: function(a) { return this.view && "3D" === this.view.type ? g.a.lc(a, 4) : Math.round(a) },
        setZoomAndCenter: function(a, b, c) {
            g.c.add(this, "setZoomAndCenter");
            b = g.a.Ia(b);
            a = this.vC(a);
            var d = this.get("zooms");
            a > d[1] && (a = d[1]);
            a < d[0] && (a = d[0]);
            this.C = !0;
            this.loaded ? this.set("zoomAndCenter", [a, b, c]) : (this.setZoom(a, !0), this.setCenter(b, !0));
            this.C = !1
        },
        clearMap: function() {
            g.c.add(this, "clearMap");
            for (var a = this.get("overlays"), b = 0; b < a.length; b += 1) a[b].set("map",
                null, !0);
            this.set("overlays", []);
            if (this.map && this.map.ra)
                for (a = this.map.ra, b = a.length - 1; 0 <= b; b -= 1)
                    if (a[b].V instanceof A.o.OK) {
                        var c = a[b].V;
                        c.C = !0;
                        c.setMap(null);
                        c.C = !1
                    }
        },
        destroy: function() {
            g.c.add(this, "destroy");
            this.Wl && (this.Wl.setMap(), this.indoorMap = this.Wl = null);
            this.set("overlays", []);
            this.set("defaultLayer", null);
            this.set("layers", []);
            var a = this.get("controls");
            a.remove = [];
            for (var b in a.Wc) a.Wc.hasOwnProperty(b) && a.remove.push(a.Wc[b]);
            a.Wc = [];
            a.add = [];
            this.set("controls", a);
            this.set("destroy", !0);
            this.La = !1;
            this.fl();
            this.B = this.J = null;
            this.Ac && this.Ac.fl();
            this.Ac = null;
            this.view && this.view.fl();
            this.view = null;
            this.hi();
            A.Jb.ft--
        },
        addControl: function(a) {
            g.c.add(this, "addControl");
            var b = g.a.ub(a),
                c = this.get("controls") || {};
            c.Wc = c.Wc || {};
            c.Wc[b] || (c.Wc[b] = a);
            c.add = c.add || [];
            c.add.push(a);
            this.set("controls", c)
        },
        removeControl: function(a) {
            g.c.add(this, "removeControl");
            var b = g.a.ub(a),
                c = this.get("controls") || {};
            c.Wc = c.Wc || {};
            c.Wc[b] && delete c.Wc[b];
            c.remove = c.remove || [];
            c.remove.push(a);
            this.set("controls",
                c)
        },
        clearControl: function() {
            g.c.add(this, "clearControl");
            var a = this.get("controls") || {};
            a.remove = a.remove || [];
            a.Wc = a.Wc || {};
            for (var b in a.Wc) a.Wc.hasOwnProperty(b) && (a.remove.push(a.Wc[b]), delete a.Wc[b]);
            this.set("controls", a)
        },
        plugin: function(a, b) {
            g.c.add(this, "setPitch");
            "string" === typeof a && (a = [a]);
            g.qb.Kg(a, b);
            return this
        },
        clearInfoWindow: function() {
            g.c.add(this, "clearInfoWindow");
            var a = this.get("overlays");
            a && 0 !== a.length && this.Xl && (this.Xl.C = !0, this.Xl.close(), this.Xl.C = !1)
        },
        remove: function(a) {
            g.c.add(this,
                "remove");
            a instanceof Array || (a = [a]);
            for (var b = 0; b < a.length; b += 1) {
                var c = a[b];
                c.C = !0;
                c.getMap && c.getMap() === this && (c.close ? c.close() : c.setMap && c.setMap(null));
                c.C = !1
            }
        },
        add: function(a) {
            g.c.add(this, "add");
            a instanceof Array || (a = [a]);
            for (var b = 0; b < a.length; b += 1) {
                var c = a[b];
                c.C = !0;
                if (c.getMap && c.getMap() !== this)
                    if (c.open) continue;
                    else c.setMap && c.setMap(this);
                c.C = !1
            }
        },
        getAllOverlays: function(a, b) {
            g.c.add(this, "getAllOverlays");
            var c = this.get("overlays");
            if (a) {
                for (var d = "amap." + a.toLowerCase(), e = [], f =
                        0; f < c.length; f += 1) d !== c[f].CLASS_NAME.toLowerCase() || !b && (c[f].za || c[f].isOfficial) || e.push(c[f]);
                return e
            }
            if (!b) {
                e = [];
                for (f = 0; f < c.length; f += 1) c[f].za || c[f].isOfficial || e.push(c[f]);
                c = e
            }
            d = this.get("layers");
            e = [];
            if (d)
                for (var f = 0, h = d.length; f < h; f += 1) d[f] instanceof A.o.OK && e.push(d[f]), d[f].hb && (e = e.concat(d[f].hb));
            return c.concat(e)
        },
        triggerResize: function() { this.map && this.map.UN() },
        refreshSize: function() { this.rF = this.Goa() },
        Goa: function() { return g.h.D2(this.J) },
        getSize: function() {
            g.c.add(this, "getSize");
            (!this.rF || 10 > this.rF.width * this.rF.height) && this.refreshSize();
            return this.rF
        },
        getContainer: function() { g.c.add(this, "getContainer"); return this.J },
        panTo: function(a) {
            g.c.add(this, "panTo");
            a = g.a.Ia(a);
            this.loaded ? this.set("panTo", a) : (this.C = !0, this.setCenter(a), this.C = !1)
        },
        panBy: function(a, b, c) {
            g.c.add(this, "panBy");
            this.C = !0;
            var d = this.get("rotation") * Math.PI / 180,
                e = a * Math.cos(d) + Math.sin(d) * b;
            a = -Math.sin(d) * a + Math.cos(d) * b;
            b = this.loaded && this.map && this.map.yd ? this.map.yd.a8 : this.get("centerCoords");
            d = Math.pow(2, 20 - this.getZoom());
            e = b.add(new g.H(-e * d, -a * d));
            e = this.Qd(e);
            !this.loaded || c ? this.setCenter(e, c) : this.set("panTo", e);
            this.C = !1
        },
        setFitView: function(a, b, c, d) {
            g.c.add(this, "setFitView");
            this.C = !0;
            var e = this.get("size"),
                f = e.height;
            if (!e.width || !f) return !0;
            if (a = this.W2(a)) {
                if (c = this.gI(a, 0, new g.H(40, 40), c, d)) b = b || !this.getBounds().contains(a.ki()) || g.l.Z && 1 < Math.abs(c[0] + this.get("zoom", null, !0)), this.setZoomAndCenter(c[0], c[1], b);
                this.C = !1;
                return a
            }
        },
        W2: function(a) {
            if (a)
                if (a instanceof A.w.sh) a = [a];
                else { if (!(a instanceof Array)) return null }
            else this.C = !0, a = this.getAllOverlays(), this.C = !1;
            if (a) {
                for (var b, c = 0; c < a.length; c += 1) {
                    var d = a[c];
                    if (d.get("visible") && !(d instanceof A.w.Oe || d instanceof A.w.un)) {
                        d.C = !0;
                        var e = d.getBounds();
                        d.C = !1;
                        e && (b = b ? b.zxa(e) : e.jb())
                    }
                }
                return b
            }
        },
        getBounds: function(a) { g.c.add(this, "getBounds"); var b = this.view.pd(); return a && b.toBounds ? (b.C = !0, a = b.toBounds(), b.C = !1, a) : b },
        setBounds: function(a, b, c, d, e, f) {
            g.c.add(this, "setBounds");
            c = this.gI(a, b, c, e, f);
            d = d || g.l.Z && 1 < Math.abs(c[0] +
                b - this.get("zoom", null, !0));
            this.C = !0;
            this.setZoomAndCenter(c[0], c[1], d);
            this.C = !1;
            return a
        },
        L2: function(a, b, c, d, e) { a = this.W2(a); return this.gI(a, b, c, d, e) },
        getCoordsBoundByZoomIn3D: function(a) {
            this.dH || (this.dH = new g.pL);
            this.C = !0;
            var b = this.getRotation(),
                c = this.getPitch(),
                d = this.getSize(!0).jb();
            this.C = !1;
            a = { size: d, zoom: a, rotation: b, pitch: c, centerCoords: this.get("centerCoords") };
            this.dH.We(a, !0);
            this.dH.vq();
            return this.dH.Ol()
        },
        gI: function(a, b, c, d, e) {
            b = b ? Number(b) : 0;
            this.C = !0;
            var f = this.getRotation(),
                h = this.getPitch(),
                k = this.getSize(!0).jb(),
                l = this.view.type;
            this.C = !1;
            var m = a.pQ(this);
            a = a.sQ(this);
            this.LB || (this.LB = "3D" === l ? new g.pL : new g.ZE);
            this.LB.We({ size: k, zoom: 3, rotation: f, pitch: h, centerCoords: m }, !0);
            var n = h = 0;
            d ? (n = d[0], c = d[1], h = d[2], d = d[3], k.width -= h + d, k.height -= n + c, h = (h - d) / 2, n = (n - c) / 2) : c && (k.width -= 2 * c.x, k.height -= 2 * c.y);
            e = e || (g.l.Z ? 17 : 18);
            c = this.get("zooms");
            d = c[0];
            var p = Infinity,
                q = Infinity;
            do {
                this.LB.We({ zoom: d }, !0);
                "3D" === l && this.LB.vq();
                for (var q = p = Infinity, r = -Infinity, s = -Infinity,
                        u = 0; u < a.length; u += 1) var v = this.LB.Ae(a[u]),
                    p = Math.min(p, v.x),
                    r = Math.max(r, v.x),
                    q = Math.min(q, v.y),
                    s = Math.max(s, v.y);
                p = r - p;
                q = s - q;
                if (p > k.width || q > k.height) { d -= 1; break }
                d += 1
            } while (d <= c[1]);
            d = Math.min(c[1], e, Math.max(c[0], d + b));
            d = Math.floor(d);
            b = Math.pow(2, 20 - d);
            e = f * Math.PI / 180;
            f = h * Math.cos(e) + Math.sin(e) * n;
            e = -Math.sin(e) * h + Math.cos(e) * n;
            m = m.$a(new g.H(f * b, e * b));
            m = this.Mh(m, 20);
            return [d, m]
        },
        setLayers: function(a) {
            g.c.add(this, "setLayers");
            for (var b = 0; b < a.length; b += 1) a[b].set("map", this, !0);
            this.set("layers",
                a)
        },
        getLayers: function() {
            g.c.add(this, "getLayers");
            var a = this.get("layers", null, !0),
                a = a.slice();
            if (this.C) {
                for (var b = [], c = -1, d = a.length; ++c < d;) {
                    var e = a[c];
                    if (e.qY)
                        for (var e = e.ipa(), f = -1, h = e.length; ++f < h;) { var k = e[f]; - 1 === g.a.indexOf(a, k) && b.push(k) }
                }
                a = a.concat(b)
            } else
                for (b = a.length; - 1 < --b;) a[b].nA && a.splice(b, 1);
            return a
        },
        getDefaultLayer: function() { g.c.add(this, "getDefaultLayer"); return this.get("defaultLayer", null, !0) },
        setDefaultLayer: function(a) {
            g.c.add(this, "setDefaultLayer");
            this.C = !0;
            a.DO = !0;
            var b = this.get("defaultLayer"),
                c = this.get("layers");
            if (b) {
                if (a === b) return;
                b.DO = !1;
                c = g.a.ao(c, g.a.indexOf(c, b))
            }
            this.set("defaultLayer", a, !0);
            a.C = !0;
            a.getMap == this && c.push(a);
            a.C = !1;
            this.setLayers(c);
            this.C = !1
        },
        pixelToLngLat: function(a, b) { g.c.add(this, "pixelToLngLat"); return this.Mh(a, b) },
        lnglatToPixel: function(a, b) { g.c.add(this, "lnglatToPixel"); return this.ec(a, b) },
        drawPolyline: function(a) {
            g.c.add(this, "drawPolyline");
            this.set("draw", "polyline");
            this.set("drawStyle", a || { strokeColor: "#006600", kb: 0.9 })
        },
        render: function(a) {
            g.c.add(this, "render");
            this.map && this.map.set("display", a ? 1 : 0)
        },
        setMask: function(a) {
            g.c.add(this, "setMask");
            this.set("mask", a);
            this.map && this.map.set("display")
        },
        drawPolygon: function(a) {
            g.c.add(this, "drawPolygon");
            this.set("draw", "polygon");
            this.set("drawStyle", a || { strokeColor: "#006600", kb: 0.9, fillColor: "#FFAA00", ae: 0.9 })
        },
        drawCircle: function(a) {
            g.c.add(this, "drawCircle");
            this.set("draw", "circle");
            this.set("drawStyle", a || { strokeColor: "#006600", kb: 0.9, fillColor: "#006600", ae: 0.9 })
        },
        pI: function() { return this.view.pI() },
        getCameraState: function() { g.c.add(this, "getCameraState"); if (this.view && "3D" == this.view.type) return this.view.C2() },
        endDraw: function() { this.set("draw", null) },
        isGoogleTileVisible: function() { return this.map.isForeignMapVisible() },
        isForeignMapVisible: function() { if (this.get("gridForeignMap") || this.get("vectorForeignMap")) return this.map && this.map.Rea() },
        Ae: function(a, b, c) { g.c.add(this, "p20ToContainer"); return this.view.Ae(a, b, c) },
        kg: function(a, b, c) {
            g.c.add(this, "containerToP20");
            return this.view.kg(a, b, c)
        },
        getObject3DByContainerPos: function(a, b, c) {
            g.c.add(this, "getObject3DByContainerPos");
            if ("2D" === this.view.type || !this.map || !this.map.K) return null;
            this.C = !0;
            this.view.kg(a);
            var d = this.view.G2(a),
                e = this.map.K.KS,
                f = this.view.Zc,
                h = this.get("zoom", null, !0),
                h = Math.pow(2, 20 - h);
            b = b || this.getLayers();
            this.C = !1;
            for (var k = [], l = 0; l < b.length; l += 1) {
                var m = b[l];
                m instanceof A.o.Iq && (m = m.Ho(e, d, f, h, a)) && k.push(m)
            }
            return c ? k : k.length ? (k.sort(function(a, b) { return a.Od - b.Od }), {
                index: k[0].index,
                point: k[0].wD,
                distance: k[0].Od,
                object: k[0].object
            }) : null
        }
    });
    A.Jb.Mb({ RI: "lngLatToGeodeticCoord", voa: "geodeticCoordToLngLat", gI: "getFitZoomAndCenterByBounds", L2: "getFitZoomAndCenterByOverlays", Yr: "lnglatTocontainer", lnglatTocontainer: "lngLatToContainer", sp: "containTolnglat", containTolnglat: "containerToLngLat", Ab: "lngLatToP20", Qd: "p20ToLngLat", Ae: "p20ToContainer", kg: "containerToP20", ec: "project", Mh: "unproject" });
    A.Jb.zb({
        isHotspotChanged: function() {
            if ("undefined" !== typeof this.HC && (this.$la(), this.get("isHotspot"))) {
                var a = this.get("layers", null, !0);
                a && a.length && !this.HC && this.dJ && this.Zsa()
            }
        },
        Zsa: function() {
            if (this.Sj) this.H3();
            else {
                var a = this;
                this.C = !0;
                this.plugin("AMap.HotSpot", function() {
                    if (!a.HC) {
                        if (!a.Sj) {
                            var b = new g.Sh;
                            new A.w.Oe({ innerOverlay: !0 });
                            a.Sj = b
                        }
                        a.H3()
                    }
                });
                this.C = !1
            }
        },
        $la: function() { this.Sj && this.Zpa() },
        K5: function(a) {
            a.type = "hotspotover";
            a.isIndoorPOI = !1;
            this.q("hotspotover", a)
        },
        I5: function(a) {
            a.type =
                "hotspotclick";
            a.isIndoorPOI = !1;
            this.q("hotspotclick", a)
        },
        J5: function(a) {
            a.type = "hotspotout";
            a.isIndoorPOI = !1;
            this.q("hotspotout", a)
        },
        H3: function() {
            var a = this.Sj;
            this.Sj.C = !0;
            this.Sj.setMap(this);
            this.Sj.C = !1;
            a.g("mouseover", this.K5, this);
            a.g("click", this.I5, this);
            a.g("mouseout", this.J5, this)
        },
        Zpa: function() {
            var a = this.Sj;
            a.G("mouseover", this.K5, this);
            a.G("click", this.I5, this);
            a.G("mouseout", this.J5, this);
            this.Sj.C = !0;
            this.Sj.setMap(null);
            this.Sj.C = !1;
            this.Sj = null
        }
    });
    A.event = {
        X: function(a, b, c, d) { g.F.g(a, b, c, d); return new g.CE(0, a, b, c, d) },
        lka: function() {},
        addListener: function(a, b, c, d) { g.a.Eh(a.addListener) ? a.addListener(b, c, d) : (a.fe || (a.fe = g.sa.fe), g.sa.g.call(a, b, c, d)); return new g.CE(1, a, b, c, d) },
        rx: function(a, b, c, d) { g.a.Eh(a.rx) ? a.rx(b, c, d) : (a.fe || (a.fe = g.sa.fe), g.sa.g.call(a, b, c, d, !0)); return new g.CE(1, a, b, c, d) },
        qH: function(a) { g.a.Eh(a.qH) ? a.qH() : g.sa.hi.call(a) },
        $t: function(a, b) { g.a.Eh(a.$t) ? a.$t(b) : g.sa.hi.call(a, b) },
        removeListener: function(a) {
            a instanceof
            g.CE && (g.a.Eh(a.ni.removeListener) ? a.ni.removeListener(a) : 0 === a.type ? g.F.G(a.ni, a.UP, a.$Q, a.Re) : 1 === a.type && (a.ni.fe || (a.ni.fe = g.sa.fe), g.sa.G.call(a.ni, a.UP, a.$Q, a.Re)))
        },
        O: function(a, b) {
            var c = Array.prototype.slice.call(arguments, 1);
            g.a.Eh(a.O) ? a.O.apply(a, c) : (a.fe || (a.fe = g.sa.fe), g.sa.q.apply(a, c))
        }
    };
    g.CE = g.aa.extend({
        r: function(a, b, c, d, e) {
            this.type = a;
            this.ni = b;
            this.UP = c;
            this.$Q = d;
            this.Re = e
        }
    });
    var nc = { X: "addDomListener", lka: "addDomListenerOnce", addListener: "addListener", rx: "addListenerOnce", qH: "clearInstanceListeners", $t: "clearListeners", removeListener: "removeListener", O: "trigger" },
        oc;
    for (oc in nc) nc.hasOwnProperty(oc) && (A.event[nc[oc]] = A.event[oc]);
    g.event = A.event;
    A.o.ac = g.aa.extend({
        ja: [g.sa, g.Pe],
        r: function(a) {
            (new Date).getTime();
            this.CLASS_NAME = this.CLASS_NAME || "AMap.Layer";
            g.a.Db(this, a);
            this.B.map && (a = this.B.map, delete this.B.map, this.B.map = a);
            this.We(this.B)
        },
        getContainer: function() { g.c.add(this, "getContainer"); if (this.o && this.o.N) return this.o.N.gj() },
        getZooms: function() { return this.get("zooms", null, !0) },
        setOpacity: function(a) {
            g.c.add(this, "setOpacity");
            a !== this.get("opacity", null, !0) && this.set("opacity", a)
        },
        getOpacity: function() {
            return this.get("opacity",
                null, !0)
        },
        show: function() {
            g.c.add(this, "show");
            this.set("visible", !0);
            if (this.Tp) {
                var a = this.get("map", null, !0);
                a && a.set("layers", a.get("layers", null, !0))
            }
        },
        hide: function() {
            g.c.add(this, "hide");
            this.set("visible", !1);
            if (this.Tp) {
                var a = this.get("map", null, !0);
                a && a.set("layers", a.get("layers", null, !0))
            }
        },
        setMap: function(a) {
            g.c.add(this, "setMap");
            var b = this.get("map");
            if (a) b && a !== b && b.ak(this), this.set("map", a);
            else if (b && (b.ak(this), this.set("map", null, !0), this.ei = !1, this.Pg && this.Pg(), this.onRemove)) this.onRemove()
        },
        getMap: function() { g.c.add(this, "getMap"); return this.get("map", null, !0) },
        mapChanged: function() {
            var a = this.get("map");
            a && a.YG(this)
        },
        setzIndex: function(a) {
            g.c.add(this, "setzIndex");
            this.set("zIndex", a)
        },
        getzIndex: function() { return this.get("zIndex", null, !0) }
    });
    A.o.ob = A.o.ac.extend({
        B: { tileSize: 256, visible: !0, opacity: 1, zIndex: 0, noLimg: 1, zooms: [3, 20], getTileUrl: g.l.Z ? g.A.cE : g.A.ZC, errorUrl: g.a.Kna, detectRetina: !0, className: "amap-layer", mapNumber: "", merge: !1, sort: !1, cacheSize: g.l.size },
        r: function(a) {
            this.CLASS_NAME = this.CLASS_NAME || "AMap.TileLayer";
            g.c.ya(this, a);
            (a = a || {}) && a.tileUrl && (a.getTileUrl = a.tileUrl);
            this.Hla(a);
            var b = a.zooms;
            b && b[1] >= this.Vk[0] ? (b[0] < this.Vk[0] && (b[0] = this.Vk[0]), b[1] > this.Vk[1] && (b[1] = this.Vk[1])) : a.zooms = [this.Vk[0], this.Vk[1]];
            arguments.callee.ka.call(this, a);
            a.$j && (this.$j = !0);
            this.QF = this.Nu()
        },
        setTextIndex: function(a) {
            g.c.add(this, "setTextIndex");
            this.set("textIndex", a)
        },
        Nu: function() { if (this.get("createTile")) return !1; var a = this.get("getTileUrl"); return a && a !== g.A.ZC && a !== g.A.cE ? !1 : !0 },
        l1: function() { if (!this.Nu()) return !1; var a = this.get("map"); return a && a.oi && "zh_cn" === a.get("lang") && !this.noVector ? !0 : !1 },
        c3: function(a) {
            var b = g.A.WI;
            g.l.ia && this.get("detectRetina") && (b = g.A.WI.replace("scl=1", "scl=2"));
            a && (b = b.replace("ltype=3",
                "ltype=11"));
            return b
        },
        Lf: function(a) {
            var b = this.l1(),
                c = this.get("map");
            this.Nu() && this.set("mapNumber", "GS(2018)1709");
            if (this.$j) return new g.o.ob(this, a, this.Nq(this.c3(!0)), this.B.maxDataZoom, !0);
            if (b)
                if (this.Tp = !0, g.o.Uh) {
                    if ("dv" === c.get("baseRender") && !this.get("watermark")) {
                        var b = c.get("showBuildingBlock"),
                            d = new g.o.ob(this, a, this.Nq(this.c3(!b)), void 0, !0);
                        b && (d.$k = new g.o.md(new A.o.ob({ zooms: [16, 20], innerLayer: !0 }), a, ["building"]), d.$k.type = "\u697c\u5757\u56fe\u5c42", d.$k.Qe(["visible",
                            "opacity", "zIndex"
                        ], d, !0), d.$k.RB(c.get("mapStyle") || "normal"));
                        d.type = "\u6805\u683c\u5e95\u56fe";
                        return d
                    }
                    if ("v" <= c.get("baseRender") || this.get("watermark")) return "3D" == a.D.view.type ? (c = new g.o.md(this, a, ["region", "road"]), c.type = "\u77e2\u91cf\u5e95\u56fe", b = new A.o.ob({ zooms: [17, 20], zIndex: 50, innerLayer: !0 }), c.$k = new g.o.md(b, a, ["building"]), c.$k.Ve = 17, c.$k.type = "\u697c\u5757\u56fe\u5c42", c.$k.ky = 1, c.$k.Qe(["visible", "merge", "sort", "opacity"], c, !0), b.W("rejectMapMask", this, !0)) : (c = new g.o.md(this,
                        a, ["region", "building", "road"]), c.type = "\u77e2\u91cf\u5e95\u56fe"), a.Tka = c
                } else return ["vectorlayer", "overlay"];
            else return this.Tp = !1, new g.o.ob(this, a, null, this.B.maxDataZoom)
        },
        getTileUrlChanged: function() {
            var a = this.get("getTileUrl");
            if (a === g.A.ZC || a === g.A.cE || a === g.A.QJ) this.dJ = !0;
            "string" === typeof a && (a = this.Nq(a));
            this.set("tileFun", a)
        },
        Hla: function(a) {
            this.Vk || (this.Vk = [this.B.zooms[0], this.B.zooms[1]]);
            var b;
            a.hasOwnProperty("detectRetina") && !1 === a.detectRetina && (b = !0);
            g.l.Z && g.l.ia && this.B.detectRetina &&
                !b && (this.Vk[1] -= 1)
        },
        getTiles: function() {
            g.c.add(this, "getTiles");
            var a = this.get("tiles", null, !0);
            if (a && a.length) a = a[0];
            else return [];
            for (var b = [], c, d = 0; d < a.length; d += 1) a[d].key && (c = a[d].key.split("/"), b.push("" + c[1] + "," + c[2]));
            return b
        },
        reload: function() {
            g.c.add(this, "reload");
            this.set("reload", 1)
        },
        qs: function() {
            this.C = !0;
            var a = this.get("map", null, !0);
            this.setMap(null);
            this.ei = !1;
            this.setMap(a);
            this.C = !1
        },
        setTileUrl: function(a) {
            g.c.add(this, "setTileUrl");
            this.l1() ? (this.set("getTileUrl", a), this.qs()) :
                this.set("getTileUrl", a)
        },
        Nq: function(a) {
            var b = this,
                c, d, e;
            return function(f, h, k) {
                f = (f + Math.pow(2, k)) % Math.pow(2, k);
                if ("number" !== typeof(f + h + k)) return null;
                var l = b.get("map"),
                    m = "zh_cn";
                l && (m = l.get("lang") || "zh_cn");
                k = a.replace("[x]", f).replace("[y]", h).replace("[z]", k).replace("[lang]", m);
                if (!c) {
                    if (d = a.match(/\{.*\}/)) e = d.toString().replace("{", "").replace("}", ""), e = e.split(",");
                    c = !0
                }
                e && e.length && (k = k.replace(d, e[Math.abs(f + h) % e.length]));
                return k
            }
        },
        getTileUrl: function(a, b, c) {
            g.c.add(this, "getTileUrl");
            return this.get("tileFun", null, !0)(a, b, c)
        },
        getZooms: function(a) { a || g.c.add(this, "getZooms"); return this.get("zooms", null, !0) }
    });
    A.o.ob.vV = A.o.ob.extend({
        B: { getTileUrl: g.A.rT, zooms: [3, 20], zIndex: 2, maxDataZoom: 18, detectRetina: !1, mapNumber: "GS(2018)984", className: "amap-layer amap-satellite", cacheSize: g.l.size },
        r: function(a) {
            this.CLASS_NAME = "AMap.TileLayer.Satellite";
            g.c.ya(this, a);
            this.Vk = [3, 20];
            arguments.callee.ka.apply(this, arguments)
        }
    });
    A.o.ob.tV = A.o.ob.extend({
        B: { getTileUrl: g.A.QJ, zooms: [3, 20], zIndex: 3, type: "overlayer", maxDataZoom: 18, className: "amap-layer amap-roadnet", cacheSize: g.l.size },
        r: function(a) {
            this.CLASS_NAME = "AMap.TileLayer.RoadNet";
            g.c.ya(this, a);
            this.Vk = [3, 20];
            arguments.callee.ka.apply(this, arguments)
        },
        Lf: function(a) {
            if (this.get("map").oi) {
                this.Tp = !0;
                var b = g.A.RJ;
                g.l.ia && this.get("detectRetina") && (b = g.A.RJ.replace("scl=1", "scl=2"));
                a = new g.o.ob(this, a, this.Nq(b), this.B.maxDataZoom)
            } else this.Tp = !1, a = new g.o.ob(this,
                a);
            return a
        }
    });
    A.o.ob.DV = A.o.ob.extend({
        B: { getTileUrl: function(a, b, c) { return g.A.Bc + "://tm.amap.com/trafficengine/mapabc/traffictile?v=1.0&t=1&zoom=" + (17 - c) + "&x=" + a + "&y=" + b }, zooms: [6, 20], zIndex: 4, type: "overlayer", autoRefresh: !1, interval: 180, maxDataZoom: 17, alwaysRender: !g.l.Y1, className: "amap-layer amap-traffic", cacheSize: g.l.size },
        r: function(a) {
            this.CLASS_NAME = "AMap.TileLayer.Traffic";
            g.c.ya(this, a);
            this.Vk = [6, 20];
            arguments.callee.ka.apply(this, arguments);
            this.C = !0;
            this.startRefresh();
            this.C = !1
        },
        stopRefresh: function() {
            g.c.add(this,
                "stopRefresh");
            this.EJ && (clearInterval(this.EJ), this.EJ = null)
        },
        startRefresh: function() {
            g.c.add(this, "startRefresh");
            if (this.get("autoRefresh") && !this.EJ) {
                var a = this;
                this.EJ = setInterval(function() {
                    a.C = !0;
                    a.reload();
                    a.C = !1;
                    a.q("refresh")
                }, Math.max(1E3 * (this.get("interval") || 180), 1E4))
            }
        },
        reload: function() {
            g.c.add(this, "reload");
            g.a.Qc(function() { this.set("reload") }, this)
        },
        Pg: function() {
            this.C = !0;
            this.stopRefresh();
            this.get("map") && this.get("map").G("zoomstart", this.reload, this);
            this.C = !1
        },
        Lf: function(a) {
            var b =
                this.get("map"),
                b = a.D;
            b.g("zoomstart", this.reload, this);
            return "d" !== b.get("baseRender") ? g.o.sw ? a = new g.o.sw(this, a) : ["vt"] : a = new g.o.ob(this, a, null, this.B.maxDataZoom)
        }
    });
    A.o.ob.Oz = A.o.ob.extend({
        B: { zooms: [3, 20], zIndex: 12, detectRetina: !1, className: "amap-layer amap-flexible", cacheSize: g.l.size },
        r: function(a) {
            this.CLASS_NAME = this.CLASS_NAME || "AMap.TileLayer.Flexible";
            g.c.ya(this, a);
            this.Pqa = !0;
            arguments.callee.ka.call(this, a)
        },
        setCreateTile: function(a) { g.c.add(this, "setCreateTile"); "function" === typeof a && a !== this.get("createTile") && this.set("createTile", a) },
        getCreateTile: function() { return this.get("createTile", null, !0) }
    });
    A.o.ob.baa = A.o.ob.Oz.extend({
        B: { zooms: [3, 20], zIndex: 12, tileSize: 512, detectRetina: !1, className: "amap-layer amap-wms", cacheSize: g.l.size, url: "", params: "" },
        r: function(a) {
            this.CLASS_NAME = "AMap.TileLayer.WMS";
            g.c.ya(this, a);
            arguments.callee.ka.call(this, a);
            this.Nv();
            var b = this,
                c = this.get("tileSize");
            this.set("createTile", function(a, e, f, h, k) {
                var l = Math.pow(2, 20 - f) * c;
                f = new g.H(l * a, l * (e + 1));
                a = new g.H(l * (a + 1), l * e);
                e = g.VI.S5(f);
                a = g.VI.S5(a);
                var m = document.createElement("img");
                "3D" === b.Ai && (m.crossOrigin = "anonymous");
                g.F.g(m, "load", function() { h(m) });
                g.F.g(m, "error", function() { k(m) });
                m.src = this.url + "&BBOX=" + e + "," + a
            })
        },
        Nv: function() {
            var a = this.get("url", null, !0),
                b = this.get("params", null, !0),
                c = this.get("tileSize");
            b.WIDTH = c;
            b.HEIGHT = c;
            b.CRS = b.CRS || "EPSG:3857";
            b.REQUEST = "GetMap";
            b.SERVICE = "WMS";
            b.FORMAT = b.FORMAT || "image/png";
            b.TRANSPARENT = void 0 === b.TRANSPARENT ? "true" : b.TRANSPARENT;
            delete b.BBOX;
            this.url = a + "?" + g.a.join(b, "&");
            this.C = !0;
            this.reload();
            this.C = !1
        },
        setUrl: function(a) {
            g.c.add(this, "setUrl");
            this.set("url",
                a, !0);
            this.Nv()
        },
        getUrl: function() { g.c.add(this, "getUrl"); return this.get("url", null, !0) },
        setParams: function(a) {
            g.c.add(this, "setParams");
            g.extend(this.get("params", null, !0), a || {});
            this.Nv()
        },
        getParams: function() { g.c.add(this, "getParams"); return this.get("params", null, !0) }
    });
    A.o.ob.caa = A.o.ob.Oz.extend({
        B: { zooms: [3, 20], tileSize: 256, zIndex: 12, detectRetina: !1, className: "amap-layer amap-wmts", cacheSize: g.l.size },
        r: function(a) {
            this.CLASS_NAME = "AMap.TileLayer.WMTS";
            g.c.ya(this, a);
            arguments.callee.ka.call(this, a);
            this.Nv();
            var b = this;
            this.get("tileSize");
            this.set("createTile", function(a, d, e, f, h) {
                var k = document.createElement("img");
                "3D" === b.Ai && (k.crossOrigin = "anonymous");
                g.F.g(k, "load", function() { f(k) });
                g.F.g(k, "error", function() { h(k) });
                k.src = this.url + "&TileMatrix=" + e + "&TileRow=" +
                    d + "&TileCol=" + a
            })
        },
        Nv: function() {
            var a = this.get("url", null, !0),
                b = this.get("params", null, !0);
            b.TileMatrixSet = b.TileMatrixSet || "EPSG:3857";
            b.Request = "GetTile";
            b.Service = "WMTS";
            b.Format = b.Format || "image/png";
            this.url = a + "?" + g.a.join(b, "&");
            this.C = !0;
            this.reload();
            this.C = !1
        },
        setUrl: function(a) {
            g.c.add(this, "setUrl");
            this.set("url", a, !0);
            this.Nv()
        },
        getUrl: function() { g.c.add(this, "getUrl"); return this.get("url", null, !0) },
        setParams: function(a) {
            g.c.add(this, "setParams");
            g.extend(this.get("params", null, !0),
                a || {});
            this.Nv()
        },
        getParams: function() { g.c.add(this, "getParams"); return this.get("params", null, !0) }
    });
    A.o.ob.FE = A.o.ob.Oz.extend({
        B: { detectRetina: !0, zooms: [10, 18], zIndex: 2 },
        r: function(a) {
            arguments.callee.ka.apply(this, arguments);
            var b = this;
            this.set("createTile", function(a, d, e, f, h) {
                var k = b.He.map.map;
                k.th.mz(a, d, e, function(l) {
                    if (l) h();
                    else {
                        var m = document.createElement("img");
                        "3D" === b.Ai && (m.crossOrigin = "anonymous");
                        g.F.g(m, "load", function() { f(m) });
                        g.F.g(m, "error", function() { h(m) });
                        m.src = function(a, c, d) {
                            var e = "zh_cn";
                            b && b.get && k && (e = k.get("lang") || "zh_cn");
                            return g.A.Bc + "://grid.amap.com/grid/" + d + "/" +
                                a + "/" + c + "?src=jsapi&key=" + g.A.key + "&lang=" + e + "&dpiType=" + (g.l.Mc ? "wprd" : "webrd")
                        }(a, d, e)
                    }
                })
            })
        }
    });
    A.o.$c = A.o.ac.extend({
        B: { visible: !0, zooms: [3, 25], type: "overlay", zIndex: 5, alwaysRender: !0 },
        r: function(a) {
            this.c4 = !0;
            arguments.callee.ka.apply(this, arguments)
        },
        Lf: function(a) { return new g.o.$c(this, a) }
    });
    A.o.v9 = A.o.ac.extend({
        B: { zooms: [14, 20], zIndex: 8, visible: !0, merge: !0, sort: !1 },
        r: function(a) {
            this.CLASS_NAME = "AMap.Buildings";
            g.c.ya(this, a);
            a = a || {};
            a.zooms && (a.zooms[0] = Math.max(14, a.zooms[0]));
            arguments.callee.ka.apply(this, arguments)
        },
        Nu: function() { return !1 },
        Lf: function(a) { if (g.l.Zt) return a = new g.o.Z$(this, a), a.ky = this.get("heightFactor") || 1, a },
        setStyle: function(a) {
            this.set("customStyle", a);
            g.c.add(this, "setStyle")
        }
    });
    A.o.HK = A.o.ac.extend({
        B: { visible: !0, zooms: [3, g.l.Z ? 20 : 18], opacity: 1, type: "overlay", zIndex: 6 },
        r: function(a) { arguments.callee.ka.apply(this, arguments) },
        Lf: function(a) { return g.o.Rz ? new g.o.Rz(this, a) : ["imagelayer"] },
        getMap: function() { g.c.add(this, "getMap"); return this.He.map },
        show: function() {
            g.c.add(this, "show");
            this.set("visible", !0);
            this.q("options")
        },
        getOpacity: function() { g.c.add(this, "getOpacity"); return this.get("opacity", null, !0) },
        setOpacity: function(a) {
            g.c.add(this, "setOpacity");
            this.set("opacity",
                a)
        },
        getBounds: function() { g.c.add(this, "getBounds"); return this.get("bounds", null, !0).jb() },
        setBounds: function(a) {
            g.c.add(this, "setBounds");
            this.q("bounds", a);
            this.C = !0;
            this.setOptions({ bounds: a });
            this.C = !1
        },
        hide: function() {
            g.c.add(this, "hide");
            this.set("visible", !1);
            this.q("options")
        },
        setOptions: function(a) {
            g.c.add(this, "setOptions");
            this.We(a);
            this.q("options")
        },
        getOptions: function() {
            g.c.add(this, "getOptions");
            var a = {},
                b;
            for (b in this.B) this.B.hasOwnProperty(b) && (a[b] = this.get(b));
            return a
        },
        getElement: function() {
            return this.o.N ?
                this.o.N.$b : this.o.Zf ? this.o.Zf.$b : null
        }
    });
    A.o.Rz = A.o.HK.extend({
        r: function(a) {
            this.CLASS_NAME = "AMap.ImageLayer";
            g.c.ya(this, a);
            a && a.url && (a.__source__ = a.url);
            arguments.callee.ka.apply(this, arguments)
        },
        getImageUrl: function() { g.c.add(this, "getImageUrl"); return this.get("__source__") },
        setImageUrl: function(a) { g.c.add(this, "setImageUrl"); return this.set("__source__", a) }
    });
    A.o.aaa = A.o.HK.extend({
        r: function(a) {
            this.CLASS_NAME = "AMap.VideoLayer";
            g.c.ya(this, a);
            a && a.url && (a.__source__ = a.url);
            arguments.callee.ka.apply(this, arguments)
        },
        getVideoUrl: function() { g.c.add(this, "getVideoUrl"); return this.get("__source__") },
        setVideoUrl: function(a) { g.c.add(this, "setVideoUrl"); return this.set("__source__", a) }
    });
    A.o.x9 = A.o.HK.extend({
        r: function(a) {
            this.CLASS_NAME = "AMap.CanvasLayer";
            g.c.ya(this, a);
            a && a.canvas && (a.__source__ = a.canvas);
            arguments.callee.ka.apply(this, arguments)
        },
        getCanvas: function() { g.c.add(this, "getCanvas"); return this.get("__source__") },
        setCanvas: function(a) { g.c.add(this, "setCanvas"); return this.set("__source__", a) },
        reFresh: function() { this.o && (this.o.VD = !0, this.o.set("display")) }
    });
    A.o.p$ = A.o.ac.extend({
        B: { visible: !0, zooms: [3, g.l.Z ? 20 : 18], type: "overlay", zIndex: 5, cursor: "pointer", alwaysRender: !0, stable: !0, bubble: !0, rejectMapMask: !0, className: "amap-mass" },
        r: function(a, b) {
            this.CLASS_NAME = "AMap.MassMarks";
            g.c.ya(this, b);
            g.l.Nk && (this.jj = !0, b.size && (b.size = g.a.Yp(b.size)), this.C = !0, this.setData(a), g.a.Db(this, b), b.style ? (this.We(this.B, !0), this.setStyle(b.style)) : this.setStyle(this.B), this.C = !1)
        },
        clear: function() {
            g.c.add(this, "clear");
            this.set("dataSources", "")
        },
        getStyle: function() {
            g.c.add(this,
                "getStyle");
            return this.fm
        },
        setStyle: function(a) {
            g.c.add(this, "setStyle");
            if (a instanceof Array) {
                for (var b = 0; b < a.length; b += 1) a[b].rotation_ = Math.PI * (a[b].rotation || 0) / 180, a[b].size = g.a.Yp(a[b].size), a.lf = Math.max(a.lf || 0, a[b].size.width + a[b].anchor.x), a.Xf = Math.max(a.lf || 0, a[b].size.height + a[b].anchor.y);
                this.fm = a
            } else a.size && (a.size = g.a.Yp(a.size)), a.rotation_ = Math.PI * (a.rotation || 0) / 180, this.We(a, !0), this.fm = { anchor: this.get("anchor"), url: this.get("url"), size: this.get("size"), rotation_: this.get("rotation_") },
                this.fm.lf = this.fm.size.width + this.fm.anchor.x, this.fm.Xf = this.fm.size.height + this.fm.anchor.y;
            this.q("style")
        },
        setData: function(a) {
            g.c.add(this, "setData");
            this.set("dataSources", a)
        },
        getData: function() { g.c.add(this, "getData"); return this.get("datas") || this.get("dataSources") },
        setMap: function(a) {
            g.c.add(this, "setMap");
            g.l.Nk && (a ? (this.get("map") && this.get("map").ak(this), this.set("map", a)) : this.get("map") && (this.get("map").ak(this), this.set("map", null, !0), this.ei = !1, this.Pg && this.Pg()))
        },
        Lf: function(a) {
            return g.qb.TC(["cvector"]) ?
                (a = new g.o.$c(this, a), this.W("datas", a), a) : ["cvector"]
        }
    });
    A.o.B9 = A.o.ac.extend({
        r: function(a) {
            this.CLASS_NAME = "AMap.CompositeLayer";
            this.qY = !0;
            g.a.Db(this, a);
            this.wm = [];
            this.We(this.B)
        },
        opacityChanged: function() { for (var a = this.get("opacity", null, !0), b = -1, c = this.wm.length; ++b < c;) this.wm[b].setOpacity(a) },
        addLayer: function(a) {
            if (!this.Wc(a)) {
                a.nA = this;
                var b = this.get("map");
                a.setMap(b);
                this.wm.push(a)
            }
            return this
        },
        removeLayer: function(a) { this.Wc(a) && a.setMap(null); return this },
        pja: function(a) {
            if (this.Wc(a)) {
                delete a.nA;
                var b = this.wm;
                a = g.a.indexOf(b, a);
                g.a.ao(b,
                    a)
            }
        },
        Wc: function(a) { return -1 !== g.a.indexOf(this.wm, a) },
        show: function() { for (var a = -1, b = this.wm.length; ++a < b;) this.wm[a].show() },
        hide: function() { for (var a = -1, b = this.wm.length; ++a < b;) this.wm[a].hide() },
        setzIndex: function(a, b) {
            g.c.add(this, "setzIndex");
            this.set("zIndex", a);
            var c = this.wm;
            if ("undefined" === typeof b)
                for (var d = -1, e = c.length; ++d < e;) {
                    var f = c[d];
                    f.setzIndex(a)
                } else(f = c[b]) && f.setzIndex(a)
        },
        Lf: function(a) { this.e = a },
        ipa: function() { return this.wm }
    });
    A.o.Eq = A.o.ac.extend({
        d$: { visible: !0, zIndex: 20, opacity: 1, zooms: [3, 20], collision: !1, alwaysRender: !0 },
        B: { zooms: [3, 20] },
        Tx: function() { this.j && this.j.bz(this.xk) },
        r: function(a) {
            this.CLASS_NAME = this.CLASS_NAME || "AMap.LabelsLayer";
            g.c.ya(this, a);
            arguments.callee.ka.apply(this, arguments);
            this.B = this.d$;
            g.a.Db(this, a);
            this.We(this.B);
            this.xk = [];
            this.hb = [];
            this.fu = [];
            this.WP = { click: 0, mouseover: 0, mousemove: 0, mouseout: 0, mousedown: 0, mouseup: 0, touchstart: 0, touchend: 0 }
        },
        kY: function() {
            var a = this;
            return g.a.zy(function(b) {
                var c =
                    a.j;
                c ? c.bz(b) : a.FC = b
            }, 100)
        },
        bz: function(a) { this.H_(a) },
        Gr: function(a, b) {
            for (var c = b._LabelMarkerId || null, d = 0; d < a.length; d++)
                if (a[d].data.id === c) return d;
            return -1
        },
        removeItem: function() {},
        sf: function(a) { return "undefined" === typeof a },
        EY: function(a) { return "string" === typeof a },
        Uea: function(a) { return "number" === typeof a },
        OX: function() { var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : []; return this.sf(a.width) || this.sf(a.height) ? this.EY(a) ? a.split(",") : this.Uea(a) ? [a, a] : a : [a.width, a.height] },
        Eda: function() { var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : []; return this.sf(a.Q) || this.sf(a.P) ? this.EY(a) ? a.split(",") : a : [a.Q, a.P] },
        add: function(a) {
            if (a) {
                a = "[object Array]" !== Object.prototype.toString.apply(a) ? [a] : a;
                for (var b = 0; b < a.length; b++) {
                    var c = a[b];
                    if (c) {
                        c.j = this;
                        var d = c.B,
                            e = {
                                data: { id: c._LabelMarkerId || void 0, name: d.title || "", position: this.Eda(d.position) || void 0, zooms: d.zooms || void 0, rank: d.rank || void 0 },
                                opts: {
                                    opacity: "number" === typeof d.opacity ? d.opacity : 1,
                                    zIndex: "number" ===
                                        typeof d.zIndex ? d.zIndex : 1,
                                    icon: {},
                                    text: {}
                                }
                            };
                        if (d.icon) {
                            var f = d.icon,
                                h = f.size,
                                k = f.clipSize;
                            h && (f.size = this.OX(h));
                            k && (f.clipSize = this.OX(k));
                            e.opts.icon = d.icon
                        }
                        d.text && (e.opts.text = d.text, d.text.content && (e.data.txt = d.text.content));
                        this.xk.push(e);
                        this.hb.push(c)
                    }
                }
                this.Tx();
                b = a.length;
                for (c = 0; c < b; c++)(d = a[c]) && d.m7 && d.m7()
            }
        },
        remove: function(a) { this.xk && (a = this.Gr(this.xk, a), -1 !== a && (this.xk.splice(a, 1), this.hb.splice(a, 1), this.Tx())) },
        clear: function() {
            this.j && this.j.clear();
            this.xk = [];
            this.hb = []
        },
        Lf: function(a) {
            this.get("map") || this.set("map", a.D, !0);
            if (g.o.Eq) {
                this.j = new g.o.Eq(this, a);
                this.xk && this.Tx();
                a = this.fu;
                if (a.length) {
                    for (var b = 0; b < a.length; b++) this.on.apply(this, a[b]);
                    this.fu = []
                }
                return this.j
            }
            return ["AMap.LabelsLayer"]
        },
        setPosition: function() {},
        positionChanged: function() {},
        on: function(a) { this.j ? (this.ph(arguments), this.j.N0(a)) : this.fu.push(arguments) },
        off: function(a) { this.j && this.j.M8(a) }
    });
    A.o.OK = A.o.Rz.extend({
        r: function(a, b, c) {
            this.CLASS_NAME = "AMap.GroundImage";
            g.c.ya(this, c);
            c = c || {};
            this.Jg = !0;
            var d = parseFloat(c.opacity);
            isNaN(d) && (d = 1);
            arguments.callee.ka.call(this, { url: a, bounds: b, clickable: c.clickable, opacity: d, map: c.map, zooms: c.zooms || [3, 20] });
            this.CLASS_NAME = "AMap.GroundImage"
        },
        Psa: function(a) { this.get("bounds").contains(a.lnglat) && (a.target = this, this.q("click", a)) },
        Qsa: function(a) { this.get("bounds").contains(a.lnglat) && (a.target = this, this.q("dblclick", a)) },
        setMap: function(a) {
            g.c.add(this,
                "setMap");
            a ? (this.get("map") && (this.get("map").ak(this), this.u1 && A.event.removeListener(this.u1), this.N1 && A.event.removeListener(this.N1)), this.set("map", a)) : this.get("map") && (this.get("map").ak(this), this.He.map = null)
        },
        mapChanged: function() { this.get("map") && (this.get("map").YG(this), this.get("clickable") && (this.u1 = A.event.addListener(this.get("map"), "click", this.Psa, this), this.N1 = A.event.addListener(this.get("map"), "dblclick", this.Qsa, this))) }
    });
    A.w.sh = g.aa.extend({
        ja: [g.sa, g.Pe, { Ia: g.a.Ia }],
        B: { extData: {}, bubble: !1, clickable: !0, draggable: !1 },
        r: function() { this.XF = g.a.ub(this) },
        wCa: function() { return this.XF },
        $Aa: function() {
            this.C = !0;
            this.get("map", null, !0) && this.setMap(this.get("map"));
            this.C = !1
        },
        mapChanged: function() { this.get("map", null, !0) && this.get("map", null, !0).IB(this) },
        eQ: function(a) {
            var b = 0;
            a && (b = "string" === typeof a ? Math.round(parseFloat(a) / 0.14929107086948487) : a);
            return b
        },
        setHeight: function(a) {
            this.height = a = a || 0;
            a = this.eQ(a);
            this.set("altitude",
                a)
        },
        getHeight: function() { return this.height },
        show: function() {
            g.c.add(this, "show");
            this.set("visible", !0)
        },
        hide: function() {
            g.c.add(this, "hide");
            this.set("visible", !1)
        },
        setMap: function(a) {
            g.c.add(this, "setMap");
            a !== this.get("map", null, !0) && (a ? (this.get("map", null, !0) && this.get("map", null, !0).Vy(this), this.set("map", a)) : this.get("map", null, !0) && (this.get("map", null, !0).Vy(this), this.set("map", null, !0)))
        },
        getMap: function() { g.c.add(this, "getMap"); return this.get("map", null, !0) },
        setExtData: function(a) {
            g.c.add(this,
                "setExtData");
            this.set("extData", a)
        },
        positionChanged: function() {},
        getExtData: function() { g.c.add(this, "getExtData"); return this.get("extData", null, !0) }
    });
    A.w.$c = A.w.sh.extend({
        r: function(a) { A.w.$c.Tc.r.apply(this, arguments) },
        show: function() {
            g.c.add(this, "show");
            this.set("visible", !0);
            this.q("show", { type: "show", target: this })
        },
        hide: function() {
            g.c.add(this, "hide");
            this.set("visible", !1);
            this.q("hide", { type: "hide", target: this })
        },
        getVisible: function() { g.c.add(this, "getVisible"); return this.get("visible", null, !0) },
        getOptions: function() {
            g.c.add(this, "getOptions");
            var a = {},
                b = "map zIndex strokeColor strokeOpacity strokeWeight strokeStyle strokeDasharray extData bubble clickable".split(" "),
                c = "isOutline outlineColor geodesic path lineJoin lineCap borderWeight showDir dirColor dirImg".split(" "),
                d = ["fillColor", "fillOpacity", "path", "lineJoin", "texture"],
                e = ["center", "radius", "texture"],
                f = ["bounds", "texture"],
                h = [];
            this instanceof A.w.Vb && (h = b.concat(c));
            this instanceof A.w.Ec && (h = b.concat(d));
            this instanceof A.w.Ug && (h = b.concat(e).concat(d));
            this instanceof A.w.Vs && (h = b.concat(e).concat(d));
            this instanceof A.w.at && (h = b.concat(d).concat(f));
            for (b = 0; b < h.length; b += 1) a[h[b]] = this.get(h[b], null, !0);
            return a
        },
        setOptions: function(a) {
            g.c.add(this, "setOptions");
            a.hasOwnProperty("path") && (a.path && a.path.length || (a.path = []), a.path = this.Ia(a.path));
            a.center && (a.center = this.Ia(a.center));
            var b;
            a.hasOwnProperty("map") && (b = a.map, delete a.map);
            this.We(a);
            void 0 !== b && (this.setMap(b), a.map = b);
            this.q("options");
            this.q("change", { type: "change", target: this })
        },
        setzIndex: function(a) {
            g.c.add(this, "setzIndex");
            this.set("zIndex", a)
        },
        getzIndex: function() {
            g.c.add(this, "getzIndex");
            return this.get("zIndex", null, !0)
        },
        setDraggable: function(a) {
            g.c.add(this, "setDraggable");
            this.set("draggable", a)
        }
    });
    A.w.SE = A.w.$c.extend({
        B: { visible: !0, zIndex: 10, strokeColor: "#006600", strokeOpacity: 0.9, strokeWeight: 3, strokeStyle: "solid", strokeDasharray: [10, 5], lineJoin: "miter", lineCap: "butt", path: [] },
        r: function(a) { A.w.SE.Tc.r.apply(this, arguments) },
        setPath: function(a, b) {
            console.log("setPath");
            g.c.add(this, "setPath");
            a && a.length || (a = []);
            a = this.Ia(a);
            this.w && this.w.get("deltaPos") && this.w.set("deltaPos", [0, 0], !0);
            this.set("path", a);
            this.q("change", { type: "change", target: this });
            b || this.q("setPath")
        },
        getPath: function() {
            g.c.add(this,
                "getPath");
            return this.A1()
        },
        reset: function() {
            var a = this.A1();
            this.w.set("deltaPos", [0, 0], !0);
            this.set("path", a)
        },
        A1: function() {
            var a = this.get("path", null, !0);
            this.w && this.w.get("deltaPos") && (a = this.w.DA(a, this.w.get("deltaPos")));
            return a
        },
        pd: function() {
            var a = this.get("path");
            if (!a || !a.length) return null;
            a[0] instanceof g.T && (a = [a]);
            for (var b = new g.me(180, 90, -180, -90), c = 0; c < a.length; c += 1)
                for (var d = a[c], e = d.length - 1; 0 <= e; e -= 1) b.extend(d[e]);
            return b
        }
    });
    A.w.SE.Mb({ pd: "getBounds" });
    A.w.Th = g.aa.extend({
        ja: [g.sa, g.Pe],
        B: { size: new g.ud(36, 36), imageOffset: new g.H(0, 0), image: g.A.yb + "/theme/v1.3/markers/0.png", imageSize: null },
        r: function(a) {
            this.CLASS_NAME = "AMap.Icon";
            g.c.ya(this, a);
            a = a || {};
            a.size && (a.size = g.a.Yp(a.size));
            a.imageSize && (a.imageSize = g.a.Yp(a.imageSize));
            g.a.Db(this, a);
            this.We(this.B)
        },
        setImageSize: function(a) {
            g.c.add(this, "setImageSize");
            a = g.a.Yp(a);
            this.set("imageSize", a)
        },
        getImageSize: function() { g.c.add(this, "getImageSize"); return this.get("imageSize", null, !0) }
    });
    A.w.n$ = g.aa.extend({
        ja: [g.sa, g.Pe],
        B: { coords: [], type: "" },
        r: function(a) {
            this.CLASS_NAME = "AMap.MarkerShape";
            g.c.ya(this, a);
            g.a.Db(this, a);
            this.We(this.B)
        }
    });
    A.w.rb = A.w.sh.extend({
        B: { cursor: "pointer", visible: !0, zIndex: 100, angle: 0, textAlign: "left", verticalAlign: "top", autoRotation: !1, opacity: 1, offset: new g.H(-9, -31), size: new g.H(19, 33), raiseOnDrag: !1, topWhenClick: !1, topWhenMouseOver: !1, animation: "AMAP_ANIMATION_NONE" },
        r: function(a) {
            this.CLASS_NAME = this.CLASS_NAME || "AMap.Marker";
            g.c.ya(this, a);
            a = a || {};
            this.Jg = !0;
            this.Cfa = g.a.ub(this);
            this.C = !0;
            a.position && (a.position = this.Ia(a.position));
            a.height && this.setHeight(a.height);
            g.a.Db(this, a);
            g.l.ue && (this.B.angle =
                0);
            this.We(this.B, !0);
            this.mapChanged();
            this.C = !1
        },
        getAnchor: function() { g.c.add(this, "getAnchor"); return this.get("anchor", null, !0) },
        setAnchor: function(a) {
            g.c.add(this, "setAnchor");
            this.set("anchor", a)
        },
        getId: function() { g.c.add(this, "getId"); return this.Cfa },
        setRaiseOnDrag: function(a) {
            g.c.add(this, "setRaiseOnDrag");
            this.set("raiseOnDrag", a)
        },
        setPosition: function(a, b) {
            g.c.add(this, "setPosition");
            a = this.Ia(a);
            void 0 !== b && (this.C = !0, this.setHeight(b), this.C = !1);
            this.set("position", a)
        },
        getPosition: function() {
            g.c.add(this,
                "getPosition");
            return this.get("position", null, !0)
        },
        getBounds: function() { var a = this.get("position", null, !0).jb(); return new g.me(a, a.jb()) },
        mapChanged: function() {
            this.el("zoom");
            var a = this.get("map", null, !0);
            a && (this.get("position", null, !0) || this.set("position", a.get("center")), a.IB(this), this.W("zoom", a))
        },
        getZooms: function() { g.c.add(this, "getZooms"); return this.get("zooms", null, !0) },
        zoomChanged: function() {
            var a = this.get("zooms", null, !0);
            if (a) {
                var b = this.get("zoom");
                b < a[0] || b > a[1] ? this.set("outOfZooms", !0) : this.set("outOfZooms", !1);
                this.w && this.w.lta()
            }
        },
        setIcon: function(a) {
            g.c.add(this, "setIcon");
            this.set("icon", a)
        },
        getIcon: function() { g.c.add(this, "getIcon"); return this.get("icon", null, !0) },
        setContent: function(a) {
            g.c.add(this, "setContent");
            this.set("content", a)
        },
        getContent: function() { g.c.add(this, "getContent"); return this.get("content", null, !0) },
        getContentDom: function() { return this.get("contentDom", null, !0) },
        hide: function() {
            g.c.add(this, "hide");
            this.set("visible", !1)
        },
        show: function() {
            g.c.add(this,
                "show");
            this.set("visible", !0)
        },
        setCursor: function(a) {
            g.c.add(this, "setCursor");
            this.set("cursor", a)
        },
        setRotation: function(a) {
            g.c.add(this, "setRotation");
            g.l.ue || this.set("angle", a)
        },
        setAngle: function(a) {
            g.c.add(this, "setAngle");
            g.l.ue || "number" !== typeof a || this.set("angle", a)
        },
        getAngle: function() { g.c.add(this, "getAngle"); return this.get("angle", null, !0) },
        setOffset: function(a) {
            g.c.add(this, "setOffset");
            this.set("offset", a)
        },
        getOffset: function() {
            g.c.add(this, "getOffset");
            return this.get("offset", null, !0)
        },
        setTextAlign: function(a) {
            g.c.add(this, "setTextAlign");
            this.set("textAlign", a)
        },
        getTextAlign: function() { g.c.add(this, "getTextAlign"); return this.get("textAlign", null, !0) },
        setVerticalAlign: function(a) {
            g.c.add(this, "setVerticalAlign");
            this.set("verticalAlign", a)
        },
        getVerticalAlign: function() { g.c.add(this, "getVerticalAlign"); return this.get("verticalAlign", null, !0) },
        setzIndex: function(a) {
            g.c.add(this, "setzIndex");
            this.set("zIndex", a)
        },
        getzIndex: function() {
            g.c.add(this, "getzIndex");
            return this.get("zIndex",
                null, !0)
        },
        setOpacity: function(a) {
            g.c.add(this, "setOpacity");
            this.set("opacity", a)
        },
        setDraggable: function(a) {
            g.c.add(this, "setDraggable");
            this.set("draggable", a)
        },
        getDraggable: function() { g.c.add(this, "getDraggable"); return this.get("draggable", null, !0) },
        moveTo: function(a, b, c) {
            g.c.add(this, "moveTo");
            a = this.Ia(a);
            this.set("move", { Tf: a, speed: b, tb: c })
        },
        moveAlong: function(a, b, c, d) {
            g.c.add(this, "moveAlong");
            if (!(2 > a.length)) {
                a = this.Ia(a);
                for (var e = [a[0]], f = a[0], h = 1; h < a.length; h += 1) f.cb(a[h]) || e.push(a[h]);
                this.set("move", { Tf: e, speed: b, tb: c, Ola: d })
            }
        },
        stopMove: function() {
            g.c.add(this, "stopMove");
            this.set("move", !1)
        },
        pauseMove: function() {
            g.c.add(this, "pauseMove");
            var a = this.get("move");
            if (!a) return !1;
            a.action = "pause";
            this.set("move", a);
            return !0
        },
        resumeMove: function() {
            g.c.add(this, "resumeMove");
            var a = this.get("move");
            if (!a) return !1;
            a.action = "resume";
            this.set("move", a);
            return !0
        },
        setShadow: function(a) {
            g.c.add(this, "setShadow");
            this.set("shadow", a)
        },
        getShadow: function() {
            g.c.add(this, "getShadow");
            return this.get("shadow",
                null, !0)
        },
        setClickable: function(a) {
            g.c.add(this, "setClickable");
            a !== this.get("clickable", null, !0) && this.set("clickable", a)
        },
        getClickable: function() { g.c.add(this, "getClickable"); return this.get("clickable", null, !0) },
        setTitle: function(a, b) { g.c.add(this, "setTitle"); "string" === typeof a && this.set("title", a, b) },
        getTitle: function() { g.c.add(this, "getTitle"); return this.get("title", null, !0) },
        setLabel: function(a) {
            g.c.add(this, "setLabel");
            a && !g.a.Pk(a) && (a = g.extend({}, this.get("label"), a));
            this.set("label",
                a)
        },
        getLabel: function() { g.c.add(this, "getLabel"); return this.get("label", null, !0) },
        setTop: function(a, b) {
            g.c.add(this, "setTop");
            this.set("isTop", a, b)
        },
        getTop: function() { g.c.add(this, "getTop"); return this.get("isTop", null, !0) },
        setShape: function(a, b) {
            g.c.add(this, "setShape");
            this.set("shape", a, b)
        },
        getShape: function() { g.c.add(this, "getShape"); return this.get("shape", null, !0) },
        setAnimation: function(a, b) {
            g.c.add(this, "setAnimation");
            this.set("animation", a, b)
        },
        getAnimation: function() {
            g.c.add(this, "getAnimation");
            return this.get("animation", null, !0)
        },
        getMap: function() { g.c.add(this, "getMap"); return this.get("map", null, !0) },
        markOnAMAP: function(a) {
            g.c.add(this, "markOnAMAP");
            a = a || {};
            var b = {};
            b.name = a.name || this.get("name", null, !0) || "";
            a = this.Ia(a.position) || this.get("position", null, !0);
            b.y = a.P;
            b.x = a.Q;
            g.Qh.Es(g.Qh.qpa(b))
        }
    });
    A.w.g$ = A.w.sh.extend({
        B: { position: null, zooms: [3, 20], opacity: 1, visible: !0 },
        r: function(a) {
            a = a || {};
            this.CLASS_NAME = this.CLASS_NAME || "AMap.LabelMarker";
            arguments.callee.ka.apply(this, arguments);
            this._LabelMarkerId = g.a.ub(this);
            g.a.Db(this, a);
            this.We(this.B, !0);
            this.XP = [];
            this.NB = {}
        },
        Gr: function(a, b) {
            for (var c = b._LabelMarkerId || null, d = 0; d < a.length; d++)
                if (a[d].data.id === c) return d;
            return -1
        },
        m7: function() {
            var a = this.XP || [];
            if (a.length) {
                for (var b = 0; b < a.length; b++) this.on.apply(this, a[b]);
                this.XP = []
            }
        },
        getBounds: function() {
            var a =
                this.get("position", null, !0);
            try { return "string" === typeof a ? a = new g.T(a.split(",")) : "[object Array]" == Object.prototype.toString.apply(a) && (a = new g.T(a[0], a[1])), new g.me(a, a.jb()) } catch (b) { return null }
        },
        getPosition: function() {
            var a = this.j.xk,
                b = this.Gr(a, this);
            return -1 !== b ? a[b].data.position : null
        },
        setPosition: function(a) {
            var b = this.j.xk,
                c = this.Gr(b, this); - 1 !== c && (b[c].data.position = a);
            this.j.Tx()
        },
        getZooms: function() {
            var a = this.j.xk,
                b = this.Gr(a, this);
            return -1 !== b ? a[b].data.zooms : null
        },
        setZooms: function(a) {
            var b =
                this.j.xk,
                c = this.Gr(b, this); - 1 !== c && (b[c].data.zooms = a);
            this.j.Tx()
        },
        getOpacity: function() {
            var a = this.j.xk,
                b = this.Gr(a, this);
            return -1 !== b ? a[b].opts.opacity : null
        },
        setOpacity: function(a) {
            var b = this.j.xk,
                c = this.Gr(b, this); - 1 !== c && (b[c].opts.opacity = a);
            this.j.Tx()
        },
        on: function(a, b) {
            if (this.j) {
                this.NB[a] = b;
                var c = this,
                    d = this.j;
                d._markerBindArray || (d._markerBindArray = {});
                var e = this._LabelMarkerId;
                d._markerBindArray[e] || (d._markerBindArray[e] = this);
                d.WP[a] ? d.WP[a]++ : (d.WP[a] = 1, this.j.on(a, function(a) {
                    var b =
                        a.type;
                    if (a && a.data && a.data.data && a.data.data.id && a.data.data.id) {
                        var d = a.data.data.id,
                            b = (d = c.j && c.j._markerBindArray && c.j._markerBindArray[d]) && d.NB[b];
                        d && b && (a.target = d, "function" === typeof b && b(a))
                    }
                }))
            } else this.XP.push(arguments)
        },
        off: function(a) {
            this.NB[a] && delete this.NB[a];
            Object.keys(this.NB).length || delete this.j._markerBindArray[this._LabelMarkerId]
        }
    });
    A.w.un = A.w.sh.extend({
        B: { visible: !1, items: [] },
        r: function(a) {
            this.CLASS_NAME = "AMap.ContextMenu";
            g.c.ya(this, a);
            this.Jg = !0;
            g.a.Db(this, a);
            this.B.items = [];
            this.We(this.B)
        },
        addItem: function(a, b, c) {
            g.c.add(this, "addItem");
            this.get("items").push({ Js: a, tb: b, nJ: c });
            this.q("items")
        },
        removeItem: function(a, b) {
            g.c.add(this, "removeItem");
            var c = this.get("items"),
                d, e;
            for (e = 0; e < c.length; e += 1)
                if (d = c[e], d.Js === a && d.tb === b) { c.splice(e, 1); break }
            this.q("items")
        },
        open: function(a, b) {
            g.c.add(this, "open");
            this.C = !0;
            b = g.a.Ia(b);
            this.set("position", b);
            this.map ? this.map && this.map !== a && (this.map.Vy(this), this.map = a, this.setMap(a)) : (this.map = a, this.setMap(a));
            this.q("open", { type: "open", target: this });
            this.C = !1
        },
        close: function() {
            g.c.add(this, "close");
            this.C = !0;
            this.setMap(null);
            this.map && (this.map = this.map.Fx = null, this.q("close", { type: "close", target: this }));
            this.C = !1
        }
    });
    A.w.Oe = A.w.sh.extend({
        B: { visible: !0, offset: new g.H(0, 0), showShadow: !1, closeWhenClickMap: !1, retainWhenClose: !0, autoMove: !0, altitude: 0, anchor: "bottom-center" },
        r: function(a) {
            this.CLASS_NAME = this.CLASS_NAME || "AMap.InfoWindow";
            g.c.ya(this, a);
            a = a || {};
            this.Jg = !0;
            a && a.size && (a.size = g.a.Yp(a.size));
            g.a.Db(this, a);
            this.We(this.B);
            a.position && this.set("position", g.a.Ia(a.position), !0);
            a.height && this.set("altitude", this.eQ(a.height), !0)
        },
        open: function(a, b, c) {
            g.c.add(this, "open");
            b = g.a.Ia(b);
            if (a && !this.kK && (b =
                    b || this.get("position", null, !0))) {
                this.q("change", { type: "change", target: this });
                c = this.eQ(c) || this.get("altitude");
                var d = this.get("map", null, !0);
                d && d === a ? (this.set("altitude", c, !0), this.set("position", b)) : (this.map = a, a.Xl && a.Xl.close(), this.set("position", b, !0), this.set("altitude", c, !0), this.C = !0, this.setMap(a), this.C = !1);
                this.q("open", { type: "open", target: this })
            }
        },
        close: function() {
            g.c.add(this, "close");
            this.w && this.w.map && (this.C = !0, this.setMap(null), this.map = null, this.q("change", { type: "change", target: this }),
                this.C = !1)
        },
        getAnchor: function() { g.c.add(this, "getAnchor"); return this.get("anchor", null, !0) },
        setAnchor: function(a) {
            g.c.add(this, "setAnchor");
            this.set("anchor", a);
            this.q("change", { type: "change", target: this })
        },
        setContent: function(a) {
            g.c.add(this, "setContent");
            this.set("content", a);
            this.q("change", { type: "change", target: this })
        },
        getContentU: function() { g.c.add(this, "getContentU"); return this.get("content", null, !0) },
        getContentDom: function() { return this.get("contentDom", null, !0) },
        getContent: function() {
            g.c.add(this,
                "getContent");
            return this.get("content", null, !0)
        },
        setPosition: function(a) {
            g.c.add(this, "setPosition");
            a = g.a.Ia(a);
            this.set("position", a);
            this.q("change", { type: "change", target: this })
        },
        setOffset: function(a) {
            g.c.add(this, "setOffset");
            this.set("offset", a);
            this.q("change", { type: "change", target: this })
        },
        getPosition: function() { g.c.add(this, "getPosition"); return this.get("position", null, !0) },
        setSize: function(a) {
            g.c.add(this, "setSize");
            a = g.a.Yp(a);
            this.set("size", a);
            this.q("change", { type: "change", target: this })
        },
        getSize: function(a) { g.c.add(this, "getSize"); var b = this.get("size", null, !0); if (b) return b; if (this.w && !a) return new g.ud(this.w.fh.offsetWidth, this.w.fh.offsetHeight) },
        getIsOpen: function() { g.c.add(this, "getIsOpen"); return !!this.get("map") }
    });
    A.w.Vb = A.w.SE.extend({
        B: { isOutline: !1, outlineColor: "#000000", geodesic: !1, dirColor: "white", borderWeight: 1 },
        r: function(a) {
            this.CLASS_NAME = this.CLASS_NAME || "AMap.Polyline";
            g.c.ya(this, a);
            this.C = !0;
            A.w.Vb.Tc.r.apply(this, arguments);
            this.Jg = !0;
            a = a || {};
            a.zIndex = "number" === typeof a.zIndex ? a.zIndex : 50;
            a.path && (a.path = this.Ia(a.path));
            g.a.Db(this, a);
            this.setOptions(this.B);
            this.C = !1
        },
        getLength: function() { g.c.add(this, "getLength"); for (var a = this.get("path"), b = 0, c = 0; c < a.length - 1; c += 1) b += a[c].re(a[c + 1]); return parseFloat(b.toFixed(2)) }
    });
    (function(a) {
        function b(a, b, c, d) { if (1 <= a) return d; var e = 1 - a; return e * e * b + 2 * e * a * c + a * a * d }

        function c(a, b, c, d, e) {
            if (1 <= a) return e;
            var f = 3 * (c[0] - b[0]),
                h = 3 * (d[0] - c[0]) - f,
                s = 3 * (c[1] - b[1]);
            c = 3 * (d[1] - c[1]) - s;
            return [(e[0] - b[0] - f - h) * Math.pow(a, 3) + h * Math.pow(a, 2) + f * a + b[0], (e[1] - b[1] - s - c) * Math.pow(a, 3) + c * Math.pow(a, 2) + s * a + b[1]]
        }

        function d(a, c, d, e) { return [b(a, c[0], d[0], e[0]), b(a, c[1], d[1], e[1])] }

        function e(b, c) { c = a.a.Ia(c); return b.XC(c, 20).dl() }

        function f(b, c) {
            a.a.isArray(c) && (c = new a.H(c[0], c[1]));
            return b.xD(c,
                20)
        }

        function h(b, f, h, n, p, q) {
            var r = null;
            if (b && h && h.length) {
                b = [b];
                b.push.apply(b, h);
                b.push(f);
                h = 0;
                for (r = b.length; h < r; h++) b[h] = e(n, b[h]);
                h = a.extend({ tolerance: 4, interpolateNumLimit: [3, 300] }, q);
                q = h.tolerance;
                h = h.interpolateNumLimit;
                q = Math.max(2, q);
                for (var s = r = 0, u = 0, v = b.length; u < v - 1; u++) var x = b[u],
                    t = b[u + 1],
                    r = r + Math.abs(t[0] - x[0]),
                    s = s + Math.abs(t[1] - x[1]);
                a: {
                    p = Math.min(h[1], Math.max(h[0], Math.round(Math.max(r, s) / p / q)));q = null;
                    switch (b.length) {
                        case 3:
                            q = d;
                            break;
                        case 4:
                            q = c;
                            break;
                        default:
                            r = null;
                            break a
                    }
                    h = [];
                    r = [0].concat(b);
                    for (s = 1; s < p - 2; s++) r[0] = s / p,
                    h.push(q.apply(null, r));h.push(b[b.length - 1]);r = h
                }
            }
            return r || [e(n, f)]
        }
        a.Yv = {
            GEa: d,
            pBa: c,
            IH: function() {
                function a(b, c, d) { return (((1 - 3 * d + 3 * c) * b + (3 * d - 6 * c)) * b + 3 * c) * b }

                function b(a) { return a }
                var c = {},
                    d = "function" === typeof Float32Array;
                return function(e, f, h, s) {
                    function u(b) {
                        if (0 === b) b = 0;
                        else if (1 === b) b = 1;
                        else {
                            for (var c = 0, d = 1; 10 !== d && x[d] <= b; ++d) c += 0.1;
                            --d;
                            var d = c + (b - x[d]) / (x[d + 1] - x[d]) * 0.1,
                                l = 3 * (1 - 3 * h + 3 * e) * d * d + 2 * (3 * h - 6 * e) * d + 3 * e;
                            if (0.001 <= l) {
                                for (c = 0; 4 > c; ++c) {
                                    l = 3 *
                                        (1 - 3 * h + 3 * e) * d * d + 2 * (3 * h - 6 * e) * d + 3 * e;
                                    if (0 === l) break;
                                    d -= (a(d, e, h) - b) / l
                                }
                                b = d
                            } else if (0 === l) b = d;
                            else {
                                var d = c,
                                    c = c + 0.1,
                                    m, n = 0;
                                do m = d + (c - d) / 2, l = a(m, e, h) - b, 0 < l ? c = m : d = m; while (1E-7 < Math.abs(l) && 10 > ++n);
                                b = m
                            }
                            b = a(b, f, s)
                        }
                        return b
                    }
                    if (!(0 <= e && 1 >= e && 0 <= h && 1 >= h)) throw Error("bezier x values must be in [0, 1] range");
                    var v = arguments.toString();
                    if (c[v]) return c[v];
                    if (e === f && h === s) return b;
                    for (var x = d ? new Float32Array(11) : Array(11), t = 0; 11 > t; ++t) x[t] = a(0.1 * t, e, h);
                    return c[v] = u
                }
            }(),
            Q2: function(a, b, c, d) {
                var e, f, r = [];
                e = 0;
                for (f =
                    a.length; e < f; e += 1) r.push.apply(r, h(a[e - 1], a[e], a[e].controlPoints, b, c, d));
                return r
            },
            cpa: function(a, b, c, d) {
                a = this.Q2(a, b, c, d);
                c = [];
                d = 0;
                for (var e = a.length; d < e; d++) c.push(f(b, a[d]));
                return c
            }
        }
    })(g);
    A.w.Iz = A.w.Vb.extend({
        B: { tolerance: 4, interpolateNumLimit: [3, 300] },
        r: function(a) {
            this.CLASS_NAME = "AMap.BezierCurve";
            g.c.ya(this, a);
            A.w.Iz.Tc.r.apply(this, arguments)
        },
        getLength: function() {
            g.c.add(this, "getLength");
            this.get("map");
            this.C = !0;
            var a = this.getInterpolateLngLats();
            this.C = !1;
            return g.Dq.distanceOfLine(a)
        },
        getInterpolateLngLats: function() { g.c.add(this, "getInterpolateLngLats"); var a = this.get("map"); return g.Yv.cpa(this.get("path"), a && a.$i || g.Ph.LK, Math.pow(2, 2), this.B) },
        getSerializedPath: function() {
            g.c.add(this,
                "getSerializedPath");
            for (var a = this.get("path", null, !0), b = [], c = 0, d = a.length; c < d; c++) {
                var e = a[c];
                if (e instanceof g.T) {
                    var f = [];
                    if (e.controlPoints)
                        for (var h = 0, k = e.controlPoints.length; h < k; h++) f.push(e.controlPoints[h].AQ()), f.push(e.controlPoints[h].wQ());
                    f.push(e.AQ());
                    f.push(e.wQ());
                    b.push(f)
                } else b.push(e)
            }
            return b
        },
        Ia: function(a) { var b = typeof a[0]; if (g.a.isArray(a) && "object" === b) { for (b = 0; b < a.length; b += 1) a[b] = this.Wha(a[b]); return a } return [this.kEa(a)] },
        Wha: function(a) {
            var b;
            if (a instanceof g.T) b =
                a;
            else {
                b = typeof a[0];
                var c, d, e = [];
                if ("string" === b || "number" === b) {
                    d = a.length;
                    if (d % 2) throw Error("LngLat number should be even, now it's " + d);
                    b = new g.T(a[d - 2], a[d - 1]);
                    c = 0;
                    for (d -= 2; c < d; c += 2) e.push(new g.T(a[c], a[c + 1]))
                } else if (g.a.isArray(a[0]))
                    for (d = a.length, b = new g.T(a[d - 1][0], a[d - 1][1]), c = 0, d -= 1; c < d; c++) e.push(new g.T(a[c][0], a[c][1]));
                else throw Error("AMap.LngLat expected, now it's " + a);
                b && e.length && (b.controlPoints = g.a.Ia(e))
            }
            if (b.controlPoints && 2 < b.controlPoints.length) throw Error("Control Points Number should be 1 or 2 !");
            return b
        }
    });
    A.w.Ec = A.w.SE.extend({
        r: function(a) {
            this.CLASS_NAME = this.CLASS_NAME || "AMap.Polygon";
            g.c.ya(this, a);
            this.C = !0;
            A.w.Ec.Tc.r.apply(this, arguments);
            this.Jg = !0;
            a = a || {};
            a.zIndex = "number" === typeof a.zIndex ? a.zIndex : 10;
            a.path && (a.path = this.Ia(a.path));
            g.a.Db(this, g.extend({ fillColor: "#FFAA00", fillOpacity: 0.9 }, a));
            this.setOptions(this.B);
            this.C = !1
        },
        HQ: function(a) {
            var b = 6378137 * Math.PI / 180,
                c = 0,
                d = a.length;
            if (3 > d) return 0;
            for (var e = 0; e < d - 1; e += 1) var f = a[e],
                h = a[e + 1],
                k = f.Q * b * Math.cos(f.P * Math.PI / 180),
                f = f.P * b,
                l = h.Q *
                b * Math.cos(h.P * Math.PI / 180),
                c = c + (k * h.P * b - l * f);
            e = a[e];
            a = a[0];
            d = e.Q * b * Math.cos(e.P * Math.PI / 180);
            e = e.P * b;
            h = a.Q * b * Math.cos(a.P * Math.PI / 180);
            c += d * a.P * b - h * e;
            return 0.5 * Math.abs(c)
        },
        getArea: function() {
            g.c.add(this, "getArea");
            var a = this.get("path", null, !0),
                b;
            if (!a.length || a[0] instanceof g.T) b = this.HQ(a);
            else { b = this.HQ(a[0]); for (var c = 1; c < a.length; c += 1) b -= this.HQ(a[c]) }
            return Number(b.toFixed(2))
        },
        toString: function() { g.c.add(this, "toString"); return this.get("path").join(";") },
        contains: function(a) {
            g.c.add(this,
                "contains");
            a = g.a.Ia(a);
            var b = this.get("path");
            b.length && b[0] instanceof g.T && (b = [b]);
            a = [a.Q, a.P];
            for (var c, d = 0, e = b.length; d < e && (c = this.wla(b[d]), g.zd.Lp(c) || c.reverse(), c = g.zd.Nd(a, c, 0 === d ? !0 : !1), 0 < d && (c = !c), c); d += 1);
            return c
        },
        wla: function(a) { for (var b = [], c = 0; c < a.length; c += 1) b.push([a[c].Q, a[c].P]); return b }
    });
    A.w.Ug = A.w.$c.extend({
        B: { visible: !0, zIndex: 10, strokeColor: "#006600", strokeOpacity: 0.9, strokeWeight: 3, strokeStyle: "solid", strokeDasharray: [10, 5], radius: 1E3, fillColor: "#006600", fillOpacity: 0.9, unit: "miter" },
        r: function(a) {
            this.CLASS_NAME = this.CLASS_NAME || "AMap.Circle";
            g.c.ya(this, a);
            this.C = !0;
            A.w.Ug.Tc.r.apply(this, arguments);
            a = a || {};
            a.center && (a.center = g.a.Ia(a.center));
            a.zIndex = "number" === typeof a.zIndex ? a.zIndex : 10;
            g.a.Uj(a.radius, "string") && (a.radius = parseFloat(a.radius), isNaN(a.radius) && delete a.radius);
            g.a.Db(this, a);
            this.Jg = this.B.center ? !0 : !1;
            this.setOptions(this.B);
            this.C = !1
        },
        setCenter: function(a, b) {
            g.c.add(this, "setCenter");
            (a = g.a.Ia(a)) && a instanceof g.T && (this.w && this.w.get("deltaPos") && this.w.set("deltaPos", [0, 0], !0), this.set("center", a), this.q("change", { type: "change", target: this }), this.Jg || (this.Jg = !0, this.get("map") && this.get("map").q("overlays")), b || this.q("setCenter"))
        },
        getCenter: function() {
            g.c.add(this, "getCenter");
            var a = this.get("center", null, !0);
            this.w && this.w.get("deltaPos") && (a =
                this.w.DA([a], this.w.get("deltaPos"))[0]);
            return a
        },
        reset: function() {
            var a = this.get("center", null, !0);
            this.w && this.w.get("deltaPos") && (a = this.w.DA([a], this.w.get("deltaPos"))[0], this.w.set("deltaPos", [0, 0], !0));
            this.set("center", a)
        },
        setRadius: function(a, b) {
            g.c.add(this, "setRadius");
            this.set("radius", a);
            this.q("change", { type: "change", target: this });
            b || this.q("setRadius")
        },
        getPath: function(a) {
            g.c.add(this, "getPath");
            a = a || 36;
            for (var b = this.get("center", null, !0), c = this.get("radius", null, !0), d = [], e = 0; e <
                a; e += 1) {
                var f = Math.PI * e / a * 2,
                    h = Math.cos(f) * c,
                    f = Math.sin(f) * c;
                d.push(b.offset(h, f))
            }
            return d
        },
        getRadius: function() { g.c.add(this, "getRadius"); return this.get("radius", null, !0) },
        getBounds: function() {
            var a = this.get("center"),
                b = this.get("radius");
            if (!a) return null;
            var c = a.offset(-b, -b),
                a = a.offset(b, b);
            return new g.me(c, a)
        },
        contains: function(a) { g.c.add(this, "contains"); return this.get("center").re(a) <= this.get("radius") ? !0 : !1 }
    });
    A.w.PU = A.w.Ug.extend({
        r: function(a) {
            this.CLASS_NAME = "AMap.CircleMarker";
            g.c.ya(this, a);
            a = a || {};
            a.unit = "px";
            void 0 === a.radius ? a.radius = 20 : g.a.Uj(a.radius, "string") && (a.radius = parseFloat(a.radius), isNaN(a.radius) && (a.radius = 20));
            A.w.PU.Tc.r.apply(this, arguments)
        },
        getBounds: function() {
            this.C = !0;
            var a = this.getCenter();
            this.C = !1;
            return new g.me(a, a.jb())
        },
        contains: function(a) {
            g.c.add(this, "contains");
            this.C = !0;
            var b = this.getMap();
            this.C = !1;
            if (!b) return !1;
            var c = this.get("center");
            b.C = !0;
            var d = !1;
            c.re(a) <=
                this.get("radius") * b.getResolution(c) && (d = !0);
            b.C = !1;
            return d
        }
    });
    var pc = g.aa.extend({
        r: function(a) {
            var b = Array(3),
                c;
            c = a instanceof Array ? a : a instanceof g.kl || a instanceof g.Oa ? a.elements : arguments;
            b[0] = c[0] || 0;
            b[1] = c[1] || 0;
            b[2] = c[2] || 0;
            this.elements = b
        },
        length: function() { return Math.sqrt(this.O4()) },
        O4: function() { var a = this.elements; return a[0] * a[0] + a[1] * a[1] + a[2] * a[2] },
        normalize: function() {
            var a = this.elements,
                b = a[0],
                c = a[1],
                d = a[2],
                e = Math.sqrt(b * b + c * c + d * d);
            if (e) { if (1 === e) return this } else return a[0] = 0, a[1] = 0, a[2] = 0, this;
            e = 1 / e;
            a[0] = b * e;
            a[1] = c * e;
            a[2] = d * e;
            return this
        },
        jb: function() { return new g.Oa(this) },
        copy: function(a) {
            var b = this.elements;
            a = a.elements;
            b[0] = a[0];
            b[1] = a[1];
            b[2] = a[2];
            return this
        },
        set: function(a, b, c) {
            var d = this.elements;
            d[0] = a;
            d[1] = b;
            d[2] = c
        },
        cb: function(a) {
            var b = this.elements;
            a = a.elements;
            return b[0] === a[0] && b[1] === a[1] && b[2] === a[2]
        },
        ln: function(a) {
            var b = this.elements;
            b[0] *= a;
            b[1] *= a;
            b[2] *= a;
            return this
        },
        add: function(a) {
            var b = this.elements;
            a = a.elements;
            b[0] += a[0];
            b[1] += a[1];
            b[2] += a[2];
            return this
        },
        vka: function(a, b) {
            var c = a.elements,
                d = b.elements,
                e = this.elements;
            e[0] = c[0] + d[0];
            e[1] = c[1] + d[1];
            e[2] = c[2] + d[2];
            return this
        },
        sub: function(a) {
            a = a.elements;
            var b = this.elements;
            b[0] -= a[0];
            b[1] -= a[1];
            b[2] -= a[2];
            return this
        },
        hz: function(a, b) {
            var c = a.elements,
                d = b.elements,
                e = this.elements;
            e[0] = c[0] - d[0];
            e[1] = c[1] - d[1];
            e[2] = c[2] - d[2];
            return this
        },
        ur: function(a) {
            a = a.elements;
            var b = this.elements;
            b[0] = b[1] * a[2] - b[2] * a[1];
            b[1] = b[2] * a[0] - b[0] * a[2];
            b[2] = b[0] * a[1] - b[1] * a[0];
            return this
        },
        Jx: function(a, b) {
            var c = a.elements,
                d = b.elements,
                e = this.elements;
            e[0] = c[1] * d[2] -
                c[2] * d[1];
            e[1] = c[2] * d[0] - c[0] * d[2];
            e[2] = c[0] * d[1] - c[1] * d[0];
            return this
        },
        uf: function(a) { a = a.elements; var b = this.elements; return b[0] * a[0] + b[1] * a[1] + b[2] * a[2] },
        re: function(a) { return Math.sqrt(this.T1(a)) },
        T1: function(a) {
            var b = a.elements,
                c = this.elements;
            a = c[0] - b[0];
            var d = c[1] - b[1],
                b = c[2] - b[2];
            return a * a + d * d + b * b
        },
        Kf: function(a) {
            var b = this.elements[0],
                c = this.elements[1],
                d = this.elements[2];
            a = a.elements;
            var e = 1 / (a[3] * b + a[7] * c + a[11] * d + a[15]);
            this.elements[0] = (a[0] * b + a[4] * c + a[8] * d + a[12]) * e;
            this.elements[1] =
                (a[1] * b + a[5] * c + a[9] * d + a[13]) * e;
            this.elements[2] = (a[2] * b + a[6] * c + a[10] * d + a[14]) * e;
            return this
        }
    });
    g.Oa = pc;
    g.Oa.Mb({ uf: "dot", jb: "clone", add: "add", sub: "sub", vka: "addVectors", hz: "subVectors", Jx: "crossVectors", normalize: "normalize", length: "length" });
    var qc = g.aa.extend({
        r: function(a) {
            var b = Array(4),
                c;
            c = a instanceof Array ? a : arguments;
            b[0] = c[0];
            b[1] = c[1];
            b[2] = c[2];
            b[3] = c[3] || 1;
            this.elements = b
        },
        copy: function(a) {
            var b = this.elements;
            a = a.elements;
            b[0] = a[0];
            b[1] = a[1];
            b[2] = a[2];
            b[3] = void 0 !== a[3] ? a[3] : 1;
            return this
        },
        multiply: function(a) {
            var b = this.elements;
            b[0] *= a;
            b[1] *= a;
            b[2] *= a;
            b[3] *= a
        },
        Kf: function(a) {
            var b = this.elements[0],
                c = this.elements[1],
                d = this.elements[2],
                e = this.elements[3];
            a = a.elements;
            this.elements[0] = a[0] * b + a[4] * c + a[8] * d + a[12] * e;
            this.elements[1] =
                a[1] * b + a[5] * c + a[9] * d + a[13] * e;
            this.elements[2] = a[2] * b + a[6] * c + a[10] * d + a[14] * e;
            this.elements[3] = a[3] * b + a[7] * c + a[11] * d + a[15] * e;
            return this
        }
    });
    g.kl = qc;

    function rc(a, b) {
        this.Jy = void 0 !== a ? a : new g.Oa(1, 0, 0);
        this.aC = void 0 !== b ? b : 0
    }
    g.mw = rc;
    rc.prototype = {
        set: function(a, b) {
            this.Jy.copy(a);
            this.aC = b;
            return this
        },
        normalize: function() {
            var a = 1 / this.Jy.length();
            this.Jy.ln(a);
            this.aC *= a;
            return this
        },
        BH: function(a) { return this.Jy.uf(a) + this.aC }
    };

    function uc(a, b, c, d, e) {
        a.Jy.set(b, c, d);
        a.aC = e;
        return a
    };

    function vc(a, b, c, d, e, f) { this.uD = [void 0 !== a ? a : new g.mw, void 0 !== b ? b : new g.mw, void 0 !== c ? c : new g.mw, void 0 !== d ? d : new g.mw, void 0 !== e ? e : new g.mw, void 0 !== f ? f : new g.mw] }
    g.YU = vc;
    vc.prototype = {
        set: function(a, b, c, d, e, f) {
            var h = this.uD;
            h[0].copy(a);
            h[1].copy(b);
            h[2].copy(c);
            h[3].copy(d);
            h[4].copy(e);
            h[5].copy(f);
            return this
        },
        jb: function() { return (new g.YU).copy(this) },
        copy: function(a) { for (var b = this.uD, c = 0; 6 > c; c++) b[c].copy(a.uD[c]); return this },
        EI: function() {
            var a = new g.Oa,
                b = new g.Oa,
                c = a.elements,
                d = b.elements;
            return function(e) {
                var f = this.uD,
                    h = e.max.elements;
                e = e.min.elements;
                for (var k = 0; 6 > k; k++) {
                    var l = f[k],
                        m = l.Jy.elements;
                    c[0] = 0 < m[0] ? e[0] : h[0];
                    d[0] = 0 < m[0] ? h[0] : e[0];
                    c[1] = 0 < m[1] ?
                        e[1] : h[1];
                    d[1] = 0 < m[1] ? h[1] : e[1];
                    c[2] = 0 < m[2] ? e[2] : h[2];
                    d[2] = 0 < m[2] ? h[2] : e[2];
                    m = l.BH(a);
                    l = l.BH(b);
                    if (0 > m && 0 > l) return !1
                }
                return !0
            }
        }()
    };
    (function(a) {
        function b(a) { this.elements = a || [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] }
        a.nV = function(a) { this.elements = [a.elements[0], a.elements[1], a.elements[2], a.elements[4], a.elements[5], a.elements[6], a.elements[8], a.elements[9], a.elements[10]] };
        b.prototype.wT = function() {
            var a = this.elements;
            a[0] = 1;
            a[4] = 0;
            a[8] = 0;
            a[12] = 0;
            a[1] = 0;
            a[5] = 1;
            a[9] = 0;
            a[13] = 0;
            a[2] = 0;
            a[6] = 0;
            a[10] = 1;
            a[14] = 0;
            a[3] = 0;
            a[7] = 0;
            a[11] = 0;
            a[15] = 1
        };
        b.prototype.set = function(a) {
            if (a.elements !== this.elements) return this.elements = a.elements.slice(0),
                this
        };
        b.prototype.toFixed = function(b) { for (var d = this.elements, e = 0; 16 > e; ++e) 0 !== d[e] && (d[e] = a.a.lc(d[e], b)); return this };
        b.prototype.concat = function(a) {
            var b, e, f, h, k, l, m;
            e = b = this.elements;
            f = a.elements;
            if (b === f)
                for (f = Array(16), a = 0; 16 > a; ++a) f[a] = b[a];
            for (a = 0; 4 > a; a++) h = e[a], k = e[a + 4], l = e[a + 8], m = e[a + 12], b[a] = h * f[0] + k * f[1] + l * f[2] + m * f[3], b[a + 4] = h * f[4] + k * f[5] + l * f[6] + m * f[7], b[a + 8] = h * f[8] + k * f[9] + l * f[10] + m * f[11], b[a + 12] = h * f[12] + k * f[13] + l * f[14] + m * f[15];
            return this
        };
        b.multiply = function(b, d) {
            var e = Array(16),
                f, h,
                k, l, m, n, p;
            k = h = b.elements;
            l = d.elements;
            if (h === l)
                for (f = 0; 16 > f; ++f) e[f] = h[f];
            for (f = 0; 4 > f; f++) h = k[f], m = k[f + 4], n = k[f + 8], p = k[f + 12], e[f] = h * l[0] + m * l[1] + n * l[2] + p * l[3], e[f + 4] = h * l[4] + m * l[5] + n * l[6] + p * l[7], e[f + 8] = h * l[8] + m * l[9] + n * l[10] + p * l[11], e[f + 12] = h * l[12] + m * l[13] + n * l[14] + p * l[15];
            return new a.Dc(e)
        };
        b.prototype.multiply = b.prototype.concat;
        b.prototype.mh = function(b) {
            var d = this.elements;
            b = b.elements;
            var e = new a.kl,
                f = e.elements;
            f[0] = b[0] * d[0] + b[1] * d[4] + b[2] * d[8] + b[3] * d[12];
            f[1] = b[0] * d[1] + b[1] * d[5] + b[2] * d[9] + b[3] *
                d[13];
            f[2] = b[0] * d[2] + b[1] * d[6] + b[2] * d[10] + b[3] * d[14];
            f[3] = b[0] * d[3] + b[1] * d[7] + b[2] * d[11] + b[3] * d[15];
            return e
        };
        b.prototype.eE = function() {
            var a, b;
            a = this.elements;
            b = a[1];
            a[1] = a[4];
            a[4] = b;
            b = a[2];
            a[2] = a[8];
            a[8] = b;
            b = a[3];
            a[3] = a[12];
            a[12] = b;
            b = a[6];
            a[6] = a[9];
            a[9] = b;
            b = a[7];
            a[7] = a[13];
            a[13] = b;
            b = a[11];
            a[11] = a[14];
            a[14] = b;
            return this
        };
        b.prototype.Iva = function(a) {
            var b, e, f;
            b = a.elements;
            a = this.elements;
            e = [];
            e[0] = b[5] * (b[10] * b[15] - b[11] * b[14]) - b[9] * (b[6] * b[15] + b[7] * b[14]) + b[13] * (b[6] * b[11] - b[7] * b[10]);
            e[4] = -b[4] *
                (b[10] * b[15] - b[11] * b[14]) + b[8] * (b[6] * b[15] - b[7] * b[14]) - b[12] * (b[6] * b[11] - b[7] * b[10]);
            e[8] = b[4] * (b[9] * b[15] - b[11] * b[13]) - b[8] * (b[5] * b[15] - b[7] * b[13]) + b[12] * (b[5] * b[11] - b[7] * b[9]);
            e[12] = -b[4] * (b[9] * b[14] - b[10] * b[13]) + b[8] * (b[5] * b[14] - b[6] * b[13]) - b[12] * (b[5] * b[10] - b[6] * b[9]);
            e[1] = -b[1] * (b[10] * b[15] - b[11] * b[14]) + b[9] * (b[2] * b[15] - b[3] * b[14]) - b[13] * (b[2] * b[11] - b[3] * b[10]);
            e[5] = b[0] * (b[10] * b[15] - b[11] * b[14]) - b[8] * (b[2] * b[15] - b[3] * b[14]) + b[12] * (b[2] * b[11] - b[3] * b[10]);
            e[9] = -b[0] * (b[9] * b[15] - b[11] * b[13]) + b[8] *
                (b[1] * b[15] - b[3] * b[13]) - b[12] * (b[1] * b[11] - b[3] * b[9]);
            e[13] = b[0] * (b[9] * b[14] - b[10] * b[13]) - b[8] * (b[1] * b[14] - b[2] * b[13]) + b[12] * (b[1] * b[10] - b[2] * b[9]);
            e[2] = b[1] * (b[6] * b[15] - b[7] * b[14]) - b[5] * (b[2] * b[15] - b[3] * b[14]) + b[13] * (b[2] * b[7] - b[3] * b[6]);
            e[6] = -b[0] * (b[6] * b[15] - b[7] * b[14]) + b[4] * (b[2] * b[15] - b[3] * b[14]) - b[12] * (b[2] * b[7] - b[3] * b[6]);
            e[10] = b[0] * (b[5] * b[15] - b[7] * b[13]) - b[4] * (b[1] * b[15] - b[3] * b[13]) + b[12] * (b[1] * b[7] - b[3] * b[5]);
            e[14] = -b[0] * (b[5] * b[14] - b[6] * b[13]) + b[4] * (b[1] * b[14] - b[2] * b[13]) - b[12] * (b[1] * b[6] -
                b[2] * b[5]);
            e[3] = -b[1] * (b[6] * b[11] - b[7] * b[10]) + b[5] * (b[2] * b[11] - b[3] * b[10]) - b[9] * (b[2] * b[7] - b[3] * b[6]);
            e[7] = b[0] * (b[6] * b[11] - b[7] * b[10]) - b[4] * (b[2] * b[11] + b[3] * b[10]) + b[8] * (b[2] * b[7] - b[3] * b[6]);
            e[11] = -b[0] * (b[5] * b[11] + b[7] * b[9]) + b[4] * (b[1] * b[11] - b[3] * b[9]) - b[8] * (b[1] * b[7] + b[3] * b[5]);
            e[15] = b[0] * (b[5] * b[10] - b[6] * b[9]) - b[4] * (b[1] * b[10] + b[2] * b[9]) + b[8] * (b[1] * b[6] - b[2] * b[5]);
            f = b[0] * e[0] + b[1] * e[4] + b[2] * e[8] + b[3] * e[12];
            if (0 === f) return this;
            f = 1 / f;
            for (b = 0; 16 > b; b++) a[b] = e[b] * f;
            return this
        };
        b.prototype.Hg = function() { return (new b).Iva(this) };
        b.prototype.zT = function(a, b, e, f, h, k) {
            var l, m, n, p;
            if (a === b || e === f || h === k) throw "null frustum";
            m = 1 / (b - a);
            n = 1 / (f - e);
            p = 1 / (k - h);
            l = this.elements;
            l[0] = 2 * m;
            l[1] = 0;
            l[2] = 0;
            l[3] = 0;
            l[4] = 0;
            l[5] = 2 * n;
            l[6] = 0;
            l[7] = 0;
            l[8] = 0;
            l[9] = 0;
            l[10] = -2 * p;
            l[11] = 0;
            l[12] = -(b + a) * m;
            l[13] = -(f + e) * n;
            l[14] = -(k + h) * p;
            l[15] = 1;
            return this
        };
        b.prototype.jta = function(a, d, e, f, h, k) { return this.concat((new b).zT(a, d, e, f, h, k)) };
        b.prototype.Gva = function(a, b, e, f, h, k) {
            var l, m, n, p;
            if (a === b || f === e || h === k) throw "null frustum";
            if (0 >= h) throw "near <= 0";
            if (0 >=
                k) throw "far <= 0";
            m = 1 / (b - a);
            n = 1 / (f - e);
            p = 1 / (k - h);
            l = this.elements;
            l[0] = 2 * h * m;
            l[1] = 0;
            l[2] = 0;
            l[3] = 0;
            l[4] = 0;
            l[5] = 2 * h * n;
            l[6] = 0;
            l[7] = 0;
            l[8] = (b + a) * m;
            l[9] = (f + e) * n;
            l[10] = -(k + h) * p;
            l[11] = -1;
            l[12] = 0;
            l[13] = 0;
            l[14] = -2 * h * k * p;
            l[15] = 0;
            return this
        };
        b.prototype.nQ = function(a, d, e, f, h, k) { return this.concat((new b).Gva(a, d, e, f, h, k)) };
        b.prototype.u7 = function(a, b, e, f) {
            var h, k;
            if (e === f || 0 === b) throw "null frustum";
            if (0 >= e) throw "near <= 0";
            if (0 >= f) throw "far <= 0";
            a /= 2;
            k = Math.sin(a);
            if (0 === k) throw "null frustum";
            h = 1 / (f - e);
            k = Math.cos(a) /
                k;
            a = this.elements;
            a[0] = k / b;
            a[1] = 0;
            a[2] = 0;
            a[3] = 0;
            a[4] = 0;
            a[5] = k;
            a[6] = 0;
            a[7] = 0;
            a[8] = 0;
            a[9] = 0;
            a[10] = -(f + e) * h;
            a[11] = -1;
            a[12] = 0;
            a[13] = 0;
            a[14] = -2 * e * f * h;
            a[15] = 0;
            return this
        };
        b.prototype.perspective = function(a, d, e, f) { return this.concat((new b).u7(a, d, e, f)) };
        b.prototype.rv = function(a, b, e) {
            var f = this.elements;
            f[0] = a;
            f[4] = 0;
            f[8] = 0;
            f[12] = 0;
            f[1] = 0;
            f[5] = b;
            f[9] = 0;
            f[13] = 0;
            f[2] = 0;
            f[6] = 0;
            f[10] = e;
            f[14] = 0;
            f[3] = 0;
            f[7] = 0;
            f[11] = 0;
            f[15] = 1;
            return this
        };
        b.prototype.scale = function(a, b, e) {
            var f = this.elements;
            f[0] *= a;
            f[4] *= b;
            f[8] *= e;
            f[1] *= a;
            f[5] *= b;
            f[9] *= e;
            f[2] *= a;
            f[6] *= b;
            f[10] *= e;
            f[3] *= a;
            f[7] *= b;
            f[11] *= e;
            return this
        };
        b.prototype.x7 = function(a, b, e) {
            var f = this.elements;
            f[12] = a;
            f[13] = b;
            f[14] = e;
            return this
        };
        b.prototype.translate = function(a, b, e) {
            var f = this.elements;
            f[12] += f[0] * a + f[4] * b + f[8] * e;
            f[13] += f[1] * a + f[5] * b + f[9] * e;
            f[14] += f[2] * a + f[6] * b + f[10] * e;
            f[15] += f[3] * a + f[7] * b + f[11] * e;
            return this
        };
        b.prototype.cz = function(a, b, e, f) {
            var h, k, l, m, n, p, q, r;
            a = Math.PI * a / 180;
            h = this.elements;
            k = Math.sin(a);
            a = Math.cos(a);
            0 !== b && 0 === e && 0 === f ?
                (0 > b && (k = -k), h[0] = 1, h[4] = 0, h[8] = 0, h[12] = 0, h[1] = 0, h[5] = a, h[9] = -k, h[13] = 0, h[2] = 0, h[6] = k, h[10] = a, h[14] = 0, h[3] = 0, h[7] = 0, h[11] = 0) : 0 === b && 0 !== e && 0 === f ? (0 > e && (k = -k), h[0] = a, h[4] = 0, h[8] = k, h[12] = 0, h[1] = 0, h[5] = 1, h[9] = 0, h[13] = 0, h[2] = -k, h[6] = 0, h[10] = a, h[14] = 0, h[3] = 0, h[7] = 0, h[11] = 0) : 0 === b && 0 === e && 0 !== f ? (0 > f && (k = -k), h[0] = a, h[4] = -k, h[8] = 0, h[12] = 0, h[1] = k, h[5] = a, h[9] = 0, h[13] = 0, h[2] = 0, h[6] = 0, h[10] = 1, h[14] = 0, h[3] = 0, h[7] = 0, h[11] = 0) : (l = Math.sqrt(b * b + e * e + f * f), 1 !== l && (l = 1 / l, b *= l, e *= l, f *= l), l = 1 - a, m = b * e, n = e * f, p = f * b, q = b * k,
                    r = e * k, k *= f, h[0] = b * b * l + a, h[1] = m * l + k, h[2] = p * l - r, h[3] = 0, h[4] = m * l - k, h[5] = e * e * l + a, h[6] = n * l + q, h[7] = 0, h[8] = p * l + r, h[9] = n * l - q, h[10] = f * f * l + a, h[11] = 0, h[12] = 0, h[13] = 0, h[14] = 0);
            h[15] = 1;
            return this
        };
        b.prototype.rotate = function(a, d, e, f) { return this.concat((new b).cz(a, d, e, f)) };
        b.prototype.ws = function(a) { return this.rotate(a, 1, 0, 0) };
        b.prototype.xs = function(a) { return this.rotate(a, 0, 1, 0) };
        b.prototype.ys = function(a) { return this.rotate(a, 0, 0, 1) };
        a.Dc = b
    })(g);
    A.w.Vs = A.w.Ec.extend({
        B: { visible: !0, zIndex: 10, strokeColor: "#006600", strokeOpacity: 0.9, strokeWeight: 3, strokeStyle: "solid", strokeDasharray: [10, 5], radius: [1E3, 1E3], fillColor: "#006600", fillOpacity: 0.9 },
        r: function() {
            var a = this,
                b = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {};
            this.CLASS_NAME = "AMap.Ellipse";
            g.c.ya(this, b);
            var b = g.extend({}, this.B, b),
                c = this.ir(b);
            b.path = c;
            A.w.Vs.Tc.r.call(this, b);
            this.set("path", c);
            this.get("center") && this.get("map") || (this.Jg = !1);
            this.on("movepoly", function(b) {
                var c =
                    a.get("map");
                b = c.Qd(c.Ab(a.get("center")).add(b.uJ));
                "3D" === c.view.type && a.set("deltaPos", [0, 0], !0);
                a.set("center", b)
            })
        },
        ir: function() {
            var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {},
                b = [],
                c = a.center || this.get("center"),
                d = a.map || this.get("map");
            if (c && d)
                for (var c = g.a.Ia(c), e = a.radius || this.get("radius"), f = d.Ab(c), a = f.x, f = f.y, h = g.a.map(e, function(a) { return a / d.getResolution(c, 20) }), e = h[0], h = h[1], k = g.l.Z, l = (k ? 4 : 1) * Math.PI / 180, m = 0, k = k ? 89 : 359; m <= k; m++) {
                    var n = m * l,
                        n = {
                            x: a + e * Math.cos(n),
                            y: f +
                                h * Math.sin(n)
                        };
                    b.push(d.Qd(n))
                }
            return b
        },
        mapChanged: function() {
            g.a.Eh(A.w.Vs.Tc.mapChanged) && A.w.Vs.Tc.mapChanged.apply(this);
            this.C = !0;
            this.setPath(this.ir());
            this.C = !1;
            !this.Jg && this.get("map") && (this.Jg = !0, this.get("map").q("overlays"))
        },
        setCenter: function(a, b) {
            g.c.add(this, "setCenter");
            (a = g.a.Ia(a)) && a instanceof g.T && (this.w && this.w.get("deltaPos") && this.w.set("deltaPos", [0, 0], !0), this.set("center", a), this.set("path", this.ir()), this.Jg || (this.Jg = !0, this.get("map") && this.get("map").q("overlays")),
                b || (this.q("setCenter"), this.q("change", { type: "change", target: this })))
        },
        setRadius: function(a) {
            var b = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : !1;
            g.c.add(this, "setRadius");
            a && 2 === a.length && (this.set("radius", a), this.set("path", this.ir()), b || (this.q("change", { type: "change", target: this }), this.q("setPath")))
        },
        setOptions: function(a) {
            A.w.Vs.Tc.setOptions.call(this, a);
            this.C = !0;
            a.radius && this.setRadius(a.radius, !0);
            a.center && this.setCenter(a.center, !0);
            this.C = !1
        },
        getRadius: function() {
            g.c.add(this,
                "getRadius");
            return this.get("radius", null, !0)
        },
        getCenter: function() {
            g.c.add(this, "getCenter");
            var a = this.get("center", null, !0);
            this.w && this.w.get("deltaPos") && this.w.DA([a], this.w.get("deltaPos"))[0];
            return a
        }
    });
    A.w.at = A.w.Ec.extend({
        B: { visible: !0, zIndex: 10, strokeColor: "#006600", strokeOpacity: 0.9, strokeWeight: 3, strokeStyle: "solid", strokeDasharray: [10, 5], fillColor: "#006600", fillOpacity: 0.9 },
        r: function() {
            var a = this,
                b = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {};
            this.CLASS_NAME = "AMap.Rectangle";
            g.c.ya(this, b);
            b = g.extend({}, this.B, b);
            this.C = !0;
            var c = this.ir(b);
            b.path = c;
            A.w.at.Tc.r.call(this, b);
            this.setPath(c);
            this.B.bounds && this.get("map") || (this.Jg = !1);
            this.on("movepoly", function(b) {
                var c = a.get("map"),
                    f = a.get("bounds"),
                    h = c.Qd(c.Ab(f.xc).add(b.uJ));
                b = c.Qd(c.Ab(f.nc).add(b.uJ));
                "3D" === c.view.type && a.set("deltaPos", [0, 0]);
                a.set("bounds", new g.me(h, b))
            });
            this.C = !1
        },
        ir: function() {
            var a = [],
                b = (0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {}).bounds || this.get("bounds");
            if (b) {
                b.C = !0;
                var c = b.getSouthWest(),
                    d = b.getNorthEast();
                b.C = !1;
                g.a.Qb([new g.T(c.Q, c.P, !0), new g.T(d.Q, c.P, !0), new g.T(d.Q, d.P, !0), new g.T(c.Q, d.P, !0)], function(b) { return a.push(b) })
            }
            return a
        },
        mapChanged: function() {
            g.a.Eh(A.w.at.Tc.mapChanged) &&
                A.w.at.Tc.mapChanged.apply(this);
            this.C = !0;
            this.setPath(this.ir());
            this.C = !1;
            !this.Jg && this.get("map") && (this.Jg = !0, this.get("map").q("overlays"))
        },
        setOptions: function(a) {
            this.C = !0;
            A.w.at.Tc.setOptions.call(this, a);
            a.bounds && this.setBounds(a.bounds, !0);
            this.C = !1
        },
        setBounds: function(a) {
            var b = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : !1;
            g.c.add(this, "setBounds");
            a && a instanceof g.me && (this.set("bounds", a), this.set("path", this.ir()), this.Jg || (this.Jg = !0, this.get("map") && this.get("map").q("overlays")),
                b || (this.q("change", { type: "change", target: this }), this.q("setBounds")))
        },
        getBounds: function() { g.c.add(this, "getBounds"); return this.get("bounds", null, !0) }
    });
    A.w.BV = A.w.rb.extend({
        B: { text: "", textAlign: "center", verticalAlign: "middle", offset: new g.H(0, 0) },
        r: function(a) {
            this.CLASS_NAME = "AMap.Text";
            g.c.ya(this, a);
            A.w.BV.Tc.r.apply(this, arguments);
            this.Eea();
            this.C = !0;
            this.setText(this.get("text"));
            this.setStyle(this.get("style"));
            this.C = !1
        },
        Eea: function() {
            if (!this.AB) {
                var a = document.createElement("div");
                a.className = "amap-overlay-text-container";
                this.AB = a
            }
        },
        getText: function() { g.c.add(this, "getText"); return this.get("text", null, !0) },
        setText: function(a) {
            g.c.add(this,
                "setText");
            a || 0 === a || (a = "");
            g.h.Nwa(this.AB, "amap-overlay-text-empty", !a);
            g.c.add(this, "setText");
            this.set("text", a);
            this.AB.innerHTML = a;
            this.F6()
        },
        setStyle: function(a) {
            g.c.add(this, "setStyle");
            a = a || {};
            for (var b in a) a.hasOwnProperty(b) && (this.AB.style[b] = a[b]);
            this.F6()
        },
        F6: function() {
            this.C = !0;
            this.setContent(this.AB);
            this.setShadow(this.getShadow());
            this.C = !1
        }
    });
    g.aV = {
        find: function(a) { return g.a.find(this.ww || [], a) },
        bI: function() { return this.ww || [] },
        Wc: function(a) { return null !== this.find(a) },
        add: function(a) {
            var b = this,
                c = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : g.a.is,
                d = this.ww || (this.ww = []);
            g.a.isArray(a) ? g.a.Qb(a, function(a) { b.add(a, c) }) : null === this.find(a) && (d.push(a), c(a));
            return this
        },
        remove: function(a) {
            var b = this,
                c = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : g.a.is,
                d = this.ww;
            if (d)
                if (g.a.isArray(a)) g.a.Qb(a, function(a) {
                    b.remove(a,
                        c)
                });
                else { var e = g.a.indexOf(d, a); - 1 !== e && (c(d[e]), d.splice(e, 1)) }
            return this
        },
        clear: function() {
            this.Qb(0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : g.a.is);
            this.ww = [];
            return this
        },
        Qb: function() {
            var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : g.a.is,
                b = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : null;
            g.a.Qb(this.ww || [], function() {
                for (var c = arguments.length, d = Array(c), e = 0; e < c; e++) d[e] = arguments[e];
                c = d[0];
                g.a.Eh(c.Qb) ? c.Qb(a, b) : a.apply(b || c, d)
            });
            return this
        },
        po: function(a) {
            for (var b =
                    arguments.length, c = Array(1 < b ? b - 1 : 0), d = 1; d < b; d++) c[d - 1] = arguments[d];
            this.Qb(function(b) { b && g.a.Eh(b[a]) && b[a].apply(b, c) });
            return this
        },
        g: function(a) {
            var b = arguments;
            this.Qb(function(a) { a.on.apply(a, b) });
            return this
        },
        G: function(a) {
            var b = arguments;
            this.Qb(function(a) { a.off.apply(a, b) });
            return this
        },
        addListener: function() { this.g.apply(this, arguments) },
        rx: function(a) {
            var b = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : g.a.is,
                c = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;
            this.Qb(function(d) {
                d.on.call(d,
                    event,
                    function() {
                        b();
                        d.off(a)
                    }, c)
            })
        },
        removeListener: function(a) { this.G(a.UP, a.$Q, a.Re) },
        O: function(a, b) { this.Qb(function(c) { c.emit(a, b) }) }
    };
    A.w.wn = A.w.sh.extend({
        ja: [g.aV],
        r: function() {
            var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : [];
            this.CLASS_NAME = "AMap.OverlayGroup";
            g.c.ya(this);
            A.w.wn.Tc.r.apply(this);
            this.map = null;
            this.add(a)
        },
        oc: function(a) {
            g.c.add(this, "setMap");
            this.po("setMap", a);
            this.po("setMap", a);
            this.set("map", a);
            this.map = a;
            return this
        },
        mapChanged: function() {},
        IB: function(a) {
            var b = this;
            g.c.add(this, "addOverlay");
            this.add(a, function(a) { b.map && (a.C = !0, a.setMap(b.map), a.C = !1) });
            return this
        },
        Vy: function(a) {
            var b =
                this;
            g.c.add(this, "removeOverlay");
            this.remove(a, function(a) {
                a.C = !0;
                a.getMap() === b.map && a.setMap(null);
                a.C = !1
            });
            return this
        },
        cd: function() {
            var a = this;
            g.c.add(this, "clearOverlays");
            this.clear(function(b) {
                b.C = !0;
                b.getMap() === a.map && b.setMap(null);
                b.C = !1
            });
            return this
        },
        ly: function() {
            g.c.add(this, "hide");
            this.po("hide");
            return this
        },
        show: function() {
            g.c.add(this, "show");
            this.po("show");
            return this
        },
        Db: function() {
            var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {};
            g.c.add(this, "setOptions");
            this.po("setOptions", a);
            return this
        }
    });
    A.w.wn.Mb({ find: "getOverlay", bI: "getOverlays", IB: ["addOverlay", "addOverlays"], Wc: "hasOverlay", Vy: ["removeOverlay", "removeOverlays"], cd: "clearOverlays", Qb: "eachOverlay", oc: "setMap", Db: "setOptions", show: "show", ly: "hide", g: "on", G: "off" });
    (function(a, b) {
        function c(a, b) { if (!a.length) return !1; for (var c = 0, d = a.length; c < d; c++) { var e = a[c]; if (!("*" === b || e && e.geometry && e.geometry.type === b) || e && e.properties && !e.properties._isAmap) return !1 } return !0 }

        function d(a) { for (var b = [], c = 0, d = a.length; c < d; c++) b.push(a[c].geometry.coordinates); return b }

        function e(a) {
            if (!a || !a.length) return [];
            a = b.a.Ia(a);
            for (var c = [], d = 0, e = a.length; d < e; d++) c[d] = a[d].dl();
            a[a.length - 1].cb(a[0]) || c.push(a[0].dl());
            return c
        }
        a.w.ZU = a.w.wn.extend({
            r: function(c) {
                this.CLASS_NAME =
                    "AMap.GeoJSON";
                b.c.ya(this, c);
                a.w.ZU.Tc.r.call(this, []);
                this.C = !0;
                this.B = b.extend({ getMarker: function(b, c) { return new a.w.rb({ innerOverlay: !0, position: c }) }, getPolyline: function(b, c) { return new a.w.Vb({ path: c, innerOverlay: !0 }) }, getPolygon: function(b, c) { return new a.w.Ec({ path: c, innerOverlay: !0 }) }, coordsToLatLng: function(a) { return a } }, c);
                if (!this.B.coordsToLatLngs) {
                    var d = this.B.coordsToLatLng;
                    this.B.coordsToLatLngs = function(a) { for (var b = [], c = 0, e = a.length; c < e; c++) b.push(d.call(null, a[c])); return b }
                }
                this.importData(this.B.geoJSON);
                this.C = !1
            },
            importData: function(a) {
                b.c.add(this, "importData");
                if (a && (a = this.zea(a), a.length)) {
                    this.clearOverlays();
                    this.IB(a);
                    var c = this.B.map;
                    if (c)
                        for (var d = 0, e = a.length; d < e; d++) a[d].C = !0, a[d].setMap(c), a[d].C = !1
                }
            },
            toGeoJSON: function() { b.c.add(this, "toGeoJSON"); for (var a = this.bI(), c = [], d = 0, e = a.length; d < e; d++) a[d].C = !0, c[d] = a[d].toGeoJSON(), a[d].C = !1; return c },
            zea: function(a) {
                if (a) {
                    b.a.isArray(a) || (a = [a]);
                    for (var c = [], d = 0, e = a.length; d < e; d++) {
                        var m = this.Aea(a[d]);
                        m && c.push(m)
                    }
                    return c
                }
            },
            sW: function(a) {
                var b =
                    "Feature" === a.type ? a.geometry : a,
                    b = this.B.coordsToLatLng(b ? b.coordinates : null),
                    b = this.B.getMarker(a, b);
                this.ar(a, b);
                return b
            },
            pba: function(c) {
                for (var d = "Feature" === c.type ? c.geometry : c, d = d ? d.coordinates : null, e = [], l = 0, m = d.length; l < m; l++) e.push(this.sW(b.extend({}, c, { type: "Feature", properties: { _isAmap: !0, _pointIndex: l, _parentProperities: c.properties }, geometry: { type: "Point", coordinates: d[l] } })));
                d = new a.w.wn(e);
                this.ar(c, d);
                return d
            },
            rW: function(a) {
                var b = "Feature" === a.type ? a.geometry : a,
                    b = this.B.coordsToLatLngs(b ?
                        b.coordinates : null),
                    b = this.B.getPolyline(a, b);
                this.ar(a, b);
                return b
            },
            oba: function(c) {
                for (var d = "Feature" === c.type ? c.geometry : c, d = d ? d.coordinates : null, e = [], l = 0, m = d.length; l < m; l++) e.push(this.rW(b.extend({}, c, { type: "Feature", properties: { _isAmap: !0, _lineStringIndex: l, _parentProperities: c.properties }, geometry: { type: "LineString", coordinates: d[l] } })));
                d = new a.w.wn(e);
                this.ar(c, d);
                return d
            },
            tW: function(a) {
                for (var b = "Feature" === a.type ? a.geometry : a, b = b ? b.coordinates : null, c = [], d = 0, e = b.length; d < e; d++) c.push(this.B.coordsToLatLngs(b[d]));
                b = this.B.getPolygon(a, c);
                this.ar(a, b);
                return b
            },
            qba: function(c) {
                for (var d = "Feature" === c.type ? c.geometry : c, d = d ? d.coordinates : null, e = [], l = 0, m = d.length; l < m; l++) e.push(this.tW(b.extend({}, c, { type: "Feature", properties: { _isAmap: !0, _polygonIndex: l, _parentProperities: c.properties }, geometry: { type: "Polygon", coordinates: d[l] } })));
                d = new a.w.wn(e);
                this.ar(c, d);
                return d
            },
            iba: function(c) {
                for (var d = ("Feature" === c.type ? c.geometry : c).geometries, e = [], l = 0, m = d.length; l < m; l++) e.push(this.MM(b.extend({}, c, {
                    type: "Feature",
                    properties: { _isAmap: !0, _geometryIndex: l, _parentProperities: c.properties },
                    geometry: d[l]
                })));
                d = new a.w.wn(e);
                this.ar(c, d);
                return d
            },
            Aea: function(b) {
                if (b) switch (b.type) {
                    case "Feature":
                        return this.MM(b);
                    case "FeatureCollection":
                        for (var c = b.features, d = [], e = 0, m = c.length; e < m; e++) {
                            var n = this.MM(c[e]);
                            n && d.push(n)
                        }
                        c = new a.w.wn(d);
                        this.ar(b, c);
                        return c;
                    default:
                        throw Error("Invalid GeoJSON object." + b.type);
                }
            },
            ar: function(a, c) {
                c && a.properties && c.setExtData && (c.C = !0, c.setExtData(b.extend({}, c.getExtData() || {}, { _geoJsonProperties: a.properties })), c.C = !1)
            },
            MM: function(a) {
                var b = "Feature" === a.type ? a.geometry : a;
                if (!(b && b.coordinates || b)) return null;
                switch (b.type) {
                    case "Point":
                        return this.sW(a);
                    case "MultiPoint":
                        return this.pba(a);
                    case "LineString":
                        return this.rW(a);
                    case "MultiLineString":
                        return this.oba(a);
                    case "Polygon":
                        return this.tW(a);
                    case "MultiPolygon":
                        return this.qba(a);
                    case "GeometryCollection":
                        return this.iba(a);
                    default:
                        throw Error("Invalid GeoJSON geometry." + b.type);
                }
            }
        });
        a.w.wn.zb({
            toGeoJSON: function(a) {
                b.c.add(this,
                    "toGeoJSON");
                a = a || this.bI();
                for (var e = [], k = 0, l = a.length; k < l; k++) a[k].toGeoJSON && (a[k].C = !0, e[k] = a[k].toGeoJSON(), a[k].C = !1);
                this.C = !0;
                a = this.getExtData() || {};
                this.C = !1;
                if (c(e, "Point")) e = { type: "Feature", properties: a._geoJsonProperties || {}, geometry: { type: "MultiPoint", coordinates: d(e) } };
                else if (c(e, "LineString")) e = { type: "Feature", properties: a._geoJsonProperties || {}, geometry: { type: "MultiLineString", coordinates: d(e) } };
                else if (c(e, "Polygon")) e = {
                    type: "Feature",
                    properties: a._geoJsonProperties || {},
                    geometry: {
                        type: "MultiPolygon",
                        coordinates: d(e)
                    }
                };
                else if (c(e, "*")) {
                    a = a._geoJsonProperties || {};
                    for (var k = [], l = 0, m = e.length; l < m; l++) k.push(e[l].geometry);
                    e = { type: "Feature", properties: a, geometry: { type: "GeometryCollection", geometries: k } }
                } else e = { type: "FeatureCollection", properties: a._geoJsonProperties || {}, features: e };
                return e
            }
        });
        a.w.rb.zb({
            toGeoJSON: function() {
                b.c.add(this, "toGeoJSON");
                this.C = !0;
                var a = this.getExtData() || {},
                    c = this.getPosition().dl();
                this.C = !1;
                return {
                    type: "Feature",
                    properties: a._geoJsonProperties || {},
                    geometry: {
                        type: "Point",
                        coordinates: c
                    }
                }
            }
        });
        a.w.Vb.zb({
            toGeoJSON: function() {
                b.c.add(this, "toGeoJSON");
                this.C = !0;
                var a = this.getExtData() || {},
                    c = this.getPath();
                this.C = !1;
                return { type: "Feature", properties: a._geoJsonProperties || {}, geometry: { type: "LineString", coordinates: e(c) } }
            }
        });
        a.w.Ec.zb({
            toGeoJSON: function() {
                b.c.add(this, "toGeoJSON");
                this.C = !0;
                var a = this.getExtData() || {},
                    c = this.getPath();
                this.C = !1;
                a = a._geoJsonProperties || {};
                if (c) {
                    c = b.a.Ia(c);
                    b.a.isArray(c[0]) || (c = [c]);
                    for (var d = [], l = 0, m = c.length; l < m; l++) d[l] = e(c[l]);
                    c = d
                } else c = [];
                return { type: "Feature", properties: a, geometry: { type: "Polygon", coordinates: c } }
            }
        })
    })(A, g);
    A.o.TK = A.o.ac.extend({
        ja: [g.aV],
        r: function(a) {
            var b = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {};
            this.CLASS_NAME = "AMap.LayerGroup";
            g.c.ya(this, b);
            A.o.TK.Tc.r.call(this, b);
            this.map = null;
            this.add(a)
        },
        oc: function(a) {
            g.c.add(this, "setMap");
            this.po("setMap", a);
            this.set("map", a);
            this.map = a;
            return this
        },
        mapChanged: function() {},
        YG: function(a) {
            var b = this;
            g.c.add(this, "addLayer");
            this.add(a, function(a) { b.map && (a.C = !0, a.setMap(b.map), a.C = !1) });
            return this
        },
        ak: function(a) {
            var b = this;
            g.c.add(this,
                "removeLayer");
            this.remove(a, function(a) {
                a.C = !0;
                a.getMap() === b.map && a.setMap(null);
                a.C = !1
            });
            return this
        },
        Tla: function() {
            var a = this;
            g.c.add(this, "clearLayers");
            this.clear(function(b) {
                b.C = !0;
                b.getMap() === a.map && b.setMap(null);
                b.C = !1
            });
            return this
        },
        ly: function() {
            g.c.add(this, "hide");
            this.po("hide");
            return this
        },
        show: function() {
            g.c.add(this, "show");
            this.po("show");
            return this
        },
        reload: function() { this.po("reload"); return this },
        Db: function() {
            var a = this,
                b = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {};
            g.c.add(this, "setOptions");
            var c = g.a.keys(b);
            g.a.Qb(c, function(c) { a.po("set", c, b[c]) });
            return this
        }
    });
    A.o.TK.Mb({ find: "getLayer", bI: "getLayers", YG: ["addLayer", "addLayers"], Wc: "hasLayer", ak: ["removeLayer", "removeLayers"], Tla: "clearLayers", Qb: "eachLayer", oc: "setMap", Db: "setOptions", show: "show", ly: "hide", reload: "reload", g: "on", G: "off" });
    g.v$ = A.Jb.extend({
        r: function(a, b) {
            b && (b.center = b.position, b.zoom = 11);
            arguments.callee.ka.apply(this, arguments);
            window.console && window.console.log && window.console.log("\u9ad8\u5fb7\u5730\u56feJSAPI\u8857\u666f\u5df2\u4e0b\u7ebf\uff0c\u611f\u8c22\u60a8\u7684\u652f\u6301\u3002")
        }
    });
    g.w$ = A.w.rb.extend({ r: function(a) { arguments.callee.ka.apply(this, arguments) } });
    g.zd = {
        yr: function(a, b) { for (var c = Infinity, d = 0, e = 1, f = b.length; e < f; d = e, e += 1) c = Math.min(c, g.zd.dwa(a, [b[d], b[e]])); return Math.sqrt(c) },
        dwa: function(a, b) { return this.eK(a, this.v1(a, b)) },
        eK: function(a, b) {
            var c = a[0] - b[0],
                d = a[1] - b[1];
            return c * c + d * d
        },
        BEa: function(a, b, c, d) {
            d = d || 1E-6;
            if (c[0] === b[0]) {
                var e = Math.min(b[1], c[1]);
                b = Math.max(b[1], c[1]);
                return Math.abs(a[0] - c[0]) < d && a[1] >= e && a[1] <= b
            }
            var e = Math.min(b[0], c[0]),
                f = Math.max(b[0], c[0]);
            return Math.abs((c[1] - b[1]) / (c[0] - b[0]) * (a[0] - b[0]) + b[1] - a[1]) < d &&
                a[0] >= e && a[0] <= f
        },
        v1: function(a, b) {
            var c = a[0],
                d = a[1],
                e = b[0],
                f = b[1],
                h = e[0],
                e = e[1],
                k = f[0],
                f = f[1],
                l = k - h,
                m = f - e,
                c = 0 === l && 0 === m ? 0 : (l * (c - h) + m * (d - e)) / (l * l + m * m || 0);
            0 >= c || (1 <= c ? (h = k, e = f) : (h += c * l, e += c * m));
            return [h, e]
        },
        Lp: function(a) { for (var b = a.length, c = 0, d = a[b - 1], e = d[0], d = d[1], f, h, k = 0; k < b; k += 1) h = a[k], f = h[0], h = h[1], c += (f - e) * (h + d), e = f, d = h; return 0 < c },
        Nd: function(a, b, c) {
            var d = a[0];
            a = a[1];
            var e = !1,
                f, h, k, l, m = b.length,
                n = 0;
            for (l = m - 1; n < m; l = n, n += 1) {
                var p = !1;
                f = b[n][0];
                h = b[n][1];
                k = b[l][0];
                l = b[l][1];
                if (f === d && h === a || k ===
                    d && l === a) return c ? !0 : !1;
                if (h < a === l >= a) {
                    f = (k - f) * (a - h) / (l - h) + f;
                    if (d === f) return c ? !0 : !1;
                    p = d < f
                }
                p && (e = !e)
            }
            return e
        },
        o6: function(a, b) {
            function c(a, b, c, d) {
                var e = [a[0] - b[0], a[1] - b[1]],
                    f = [c[0] - d[0], c[1] - d[1]];
                a = a[0] * b[1] - a[1] * b[0];
                c = c[0] * d[1] - c[1] * d[0];
                d = 1 / (e[0] * f[1] - e[1] * f[0]);
                return [(a * f[0] - c * e[0]) * d, (a * f[1] - c * e[1]) * d]
            }

            function d(a, b, c) { return (c[0] - b[0]) * (a[1] - b[1]) > (c[1] - b[1]) * (a[0] - b[0]) }
            var e, f, h, k, l = a;
            e = b[b.length - 2];
            for (var m = 0, n = b.length - 1; m < n; m++) {
                f = b[m];
                var p = l,
                    l = [];
                h = p[p.length - 1];
                for (var q = 0, r =
                        p.length; q < r; q++) k = p[q], d(k, e, f) ? (d(h, e, f) || l.push(c(e, f, h, k)), l.push(k)) : d(h, e, f) && l.push(c(e, f, h, k)), h = k;
                e = f
            }
            if (3 > l.length) return [];
            l.push(l[0]);
            return l
        }
    };
    (function(a) {
        function b(b, c) {
            var d;
            a: {
                switch (b) {
                    case "EPSG3395":
                        d = a.Ph.UU;
                        break a;
                    case "EPSG4326":
                        d = a.Ph.VU;
                        break a
                }
                d = a.Ph.LK
            }
            return {
                project: function(b) { a.a.isArray(b) && (b = new a.T(b[0], b[1])); return d.XC(b, c).dl() },
                unproject: function(b) { a.a.isArray(b) && (b = new a.H(b[0], b[1])); return d.xD(b, c).dl() },
                normalizePoint: function(b) { return a.a.Ia(b) },
                distance: function(b, c) {
                    c = this.normalizePoint(c);
                    if (a.a.isArray(c)) return this.distanceToLine(b, c);
                    b = this.normalizePoint(b);
                    var d = a.om.gu,
                        e = Math.cos,
                        f = b.P * d,
                        k =
                        c.P * d,
                        h = 2 * a.om.PP,
                        d = c.Q * d - b.Q * d,
                        e = (1 - e(k - f) + (1 - e(d)) * e(f) * e(k)) / 2;
                    return h * Math.asin(Math.sqrt(e))
                },
                ringArea: function(b) {
                    b = this.normalizeLine(b);
                    var c = a.om.PP * a.om.gu,
                        d = 0,
                        e = b.length;
                    if (3 > e) return 0;
                    for (var f = 0; f < e - 1; f += 1) var k = b[f],
                        h = b[f + 1],
                        u = k.Q * c * Math.cos(k.P * a.om.gu),
                        k = k.P * c,
                        v = h.Q * c * Math.cos(h.P * a.om.gu),
                        d = d + (u * h.P * c - v * k);
                    f = b[f];
                    b = b[0];
                    e = f.Q * c * Math.cos(f.P * a.om.gu);
                    f = f.P * c;
                    h = b.Q * c * Math.cos(b.P * a.om.gu);
                    d += e * b.P * c - h * f;
                    return 0.5 * Math.abs(d)
                },
                sphericalCalotteArea: function(b) {
                    var c = a.om.PP;
                    b = c - c *
                        Math.cos(b / c);
                    return 2 * Math.PI * c * b
                }
            }
        }

        function c() {
            return {
                normalizePoint: function(a) { return a && a.x && a.y ? [a.x, a.y] : a },
                distance: function(a, b) {
                    var c = a[0] - b[0],
                        d = a[1] - b[1];
                    return Math.sqrt(c * c + d * d)
                },
                project: function(a) { return a },
                unproject: function(a) { return a },
                ringArea: function(a) {
                    for (var b = [0, 0], c = [0, 0], d = 0, e = a[0], n = a.length, p = 2; p < n; p++) {
                        var q = a[p - 1],
                            r = a[p];
                        b[0] = e[0] - r[0];
                        b[1] = e[1] - r[1];
                        c[0] = e[0] - q[0];
                        c[1] = e[1] - q[1];
                        d += b[0] * c[1] - b[1] * c[0]
                    }
                    return d / 2
                }
            }
        }

        function d(a) {
            for (var b = 0, c = a.length, d = 0; d < c - 1; d++) var e =
                a[d],
                n = a[d + 1],
                b = b + (n[0] - e[0]) * (n[1] + e[1]);
            if (a[c - 1][0] !== a[0][0] || a[c - 1][1] !== a[0][1]) e = a[c - 1], n = a[0], b += (n[0] - e[0]) * (n[1] + e[1]);
            return 0 >= b
        }

        function e(b) {
            this.CLASS_NAME = "AMap.GeometryUtil";
            this.Ob = a.extend({ onSegmentTolerance: 5, crs: "EPSG3857", maxZoom: 20 }, b);
            this.setCrs(this.Ob.crs)
        }
        a.extend(e.prototype, {
            clone: function(b) { return new e(a.extend({}, this.Ob, b)) },
            isPoint: function(b) { return b && (b instanceof a.T || a.a.isArray(b) && !isNaN(b[0])) },
            normalizePoint: function(a) { return a },
            normalizeLine: function(a) {
                for (var b = [], c = 0, d = a.length; c < d; c++) b.push(this.normalizePoint(a[c]));
                return b
            },
            normalizeMultiLines: function(b) { a.a.isArray(b) && this.isPoint(b[0]) && (b = [b]); for (var c = [], d = 0, e = b.length; d < e; d++) c.push(this.normalizeLine(b[d])); return c },
            setCrs: function(d) { a.extend(this, d && d.project && d.unproject ? d : "plane" === d ? c() : b(d, this.Ob.maxZoom)) },
            distance: function() { throw Error("distance Not implemented!"); },
            Uw: function(a, b) {
                a = this.normalizeLine(a);
                this.isPoint(a[0]) || (a = a[0]);
                for (var c = [], d = 0, e = a.length; d < e; d++) c.push(this.project(a[d]));
                !0 === b ? c = this.makesureClockwise(c) : !1 === b && (c = this.makesureClockwise(c), c.reverse());
                return c
            },
            Aia: function(a) { for (var b = [], c = 0, d = a.length; c < d; c++) b.push(this.unproject(a[c])); return b },
            closestOnSegment: function(b, c, d) { b = a.zd.v1(this.project(b), this.Uw([c, d])); return this.unproject(b) },
            closestOnLine: function(a, b) {
                b = this.normalizeLine(b);
                for (var c = Infinity, d, e = 0, n = b.length; e < n - 1; e++) {
                    var p = this.closestOnSegment(a, b[e], b[e + 1]),
                        q = this.distance(a, p);
                    q < c && (c = q, d = p)
                }
                return d
            },
            distanceToSegment: function(a,
                b, c) { return this.distanceToLine(a, [b, c]) },
            distanceToLine: function(a, b) {
                b = this.normalizeLine(b);
                this.isPoint(b[0]) || (b = b[0]);
                for (var c = Infinity, d = 0, e = b.length; d < e - 1; d++) var n = this.closestOnSegment(a, b[d], b[d + 1]),
                    c = Math.min(c, this.distance(a, n));
                return c
            },
            distanceToPolygon: function(a, b) { return this.isPointInRing(a, b) ? 0 : this.distanceToLine(a, b) },
            isPointOnSegment: function(a, b, c, d) { if (!d && 0 !== d || 0 > d) d = this.Ob.onSegmentTolerance; return this.distanceToSegment(a, b, c) <= d },
            isPointOnLine: function(a, b, c) {
                b = this.normalizeLine(b);
                for (var d = 0, e = b.length; d < e - 1; d++)
                    if (this.isPointOnSegment(a, b[d], b[d + 1], c)) return !0;
                return !1
            },
            isPointOnRing: function(a, b, c) {
                b = this.normalizeLine(b);
                for (var d = 0, e = b.length; d < e; d++)
                    if (this.isPointOnSegment(a, b[d], b[d === e - 1 ? 0 : d + 1], c)) return !0;
                return !1
            },
            isPointOnPolygon: function(a, b, c) {
                b = this.normalizeMultiLines(b);
                for (var d = 0, e = b.length; d < e; d++)
                    if (this.isPointOnRing(a, b[d], c)) return !0;
                return !1
            },
            makesureClockwise: function(a) { d(a) || (a = [].concat(a), a.reverse()); return a },
            makesureAntiClockwise: function(a) {
                d(a) &&
                    (a = [].concat(a), a.reverse());
                return a
            },
            isPointInRing: function(b, c) { c = this.normalizeLine(c); var d = this.Uw(c, !0); return a.zd.Nd(this.project(b), d, !1) },
            isRingInRing: function(a, b) {
                for (var c = 0, d = a.length; c < d; c++)
                    if (!this.isPointInRing(a[c], b)) return !1;
                return !0
            },
            isPointInPolygon: function(a, b) { b = this.normalizeMultiLines(b); for (var c, d = 0, e = b.length; d < e && (c = this.isPointInRing(a, b[d]), 0 < d && (c = !c), c); d += 1); return c },
            doesSegmentsIntersect: function(a, b, c, d) {
                var e = this.Uw([a, b, c, d]);
                a = e[0];
                b = e[1];
                c = e[2];
                d = e[3];
                var e = !1,
                    n = (d[0] - c[0]) * (a[1] - c[1]) - (d[1] - c[1]) * (a[0] - c[0]),
                    p = (b[0] - a[0]) * (a[1] - c[1]) - (b[1] - a[1]) * (a[0] - c[0]);
                a = (d[1] - c[1]) * (b[0] - a[0]) - (d[0] - c[0]) * (b[1] - a[1]);
                0 !== a && (b = n / a, p /= a, 0 <= b && 1 >= b && 0 <= p && 1 >= p && (e = !0));
                return e
            },
            doesSegmentLineIntersect: function(a, b, c) {
                c = this.normalizeLine(c);
                for (var d = 0, e = c.length; d < e - 1; d++)
                    if (this.doesSegmentsIntersect(a, b, c[d], c[d + 1])) return !0;
                return !1
            },
            doesSegmentRingIntersect: function(a, b, c) {
                c = this.normalizeLine(c);
                for (var d = 0, e = c.length; d < e; d++)
                    if (this.doesSegmentsIntersect(a,
                            b, c[d], c[d === e - 1 ? 0 : d + 1])) return !0;
                return !1
            },
            doesSegmentPolygonIntersect: function(a, b, c) {
                c = this.normalizeMultiLines(c);
                for (var d = 0, e = c.length; d < e; d++)
                    if (this.doesSegmentRingIntersect(a, b, c[d])) return !0;
                return !1
            },
            doesLineLineIntersect: function(a, b) {
                a = this.normalizeLine(a);
                for (var c = 0, d = a.length; c < d - 1; c++)
                    if (this.doesSegmentLineIntersect(a[c], a[c + 1], b)) return !0;
                return !1
            },
            doesLineRingIntersect: function(a, b) {
                a = this.normalizeLine(a);
                for (var c = 0, d = a.length; c < d - 1; c++)
                    if (this.doesSegmentRingIntersect(a[c],
                            a[c + 1], b)) return !0;
                return !1
            },
            doesPolygonPolygonIntersect: function(a, b) { return this.doesRingRingIntersect(b, a) || this.isRingInRing(a, b) || this.isRingInRing(b, a) ? !0 : !1 },
            doesRingRingIntersect: function(a, b) {
                a = this.normalizeLine(a);
                for (var c = 0, d = a.length; c < d; c++)
                    if (this.doesSegmentRingIntersect(a[c], a[c === d - 1 ? 0 : c + 1], b)) return !0;
                return !1
            },
            BO: function(a, b) {
                for (var c = 0, d = 0; d < a.length - 1; d += 1) {
                    var e = this.distance(a[d], a[d + 1]);
                    if (e + c < b) c += e;
                    else return c = (b - c) / e, [a[d][0] + c * (a[d + 1][0] - a[d][0]), a[d][1] + c * (a[d + 1][1] -
                        a[d][1]), d]
                }
                return null
            },
            KW: function(a, b) {
                function c() {
                    var a = [e[0] - n[0], e[1] - n[1]],
                        b = [p[0] - q[0], p[1] - q[1]],
                        d = e[0] * n[1] - e[1] * n[0],
                        f = p[0] * q[1] - p[1] * q[0],
                        h = 1 / (a[0] * b[1] - a[1] * b[0]);
                    return [(d * b[0] - f * a[0]) * h, (d * b[1] - f * a[1]) * h]
                }

                function d(a) { return (n[0] - e[0]) * (a[1] - e[1]) > (n[1] - e[1]) * (a[0] - e[0]) }
                a = this.makesureAntiClockwise(a);
                b = this.makesureClockwise(b);
                var e, n, p, q, r = a;
                e = b[b.length - 1];
                for (var s = 0, u = b.length; s < u; s++) {
                    n = b[s];
                    var v = r,
                        r = [];
                    p = v[v.length - 1];
                    for (var x = 0, t = v.length; x < t; x++) q = v[x], d(q) ? (d(p) || r.push(c()),
                        r.push(q)) : d(p) && r.push(c()), p = q;
                    e = n
                }
                return r
            },
            ringRingClip: function(a, b) {
                a = this.Uw(a);
                b = this.Uw(b);
                var c = this.KW(a, b);
                0 == c.length && (c = this.KW(b, a));
                return this.Aia(c)
            },
            ringArea: function() { throw Error("distance Not implemented!"); },
            distanceOfLine: function(a) { a = this.normalizeLine(a); for (var b = 0, c = 0, d = a.length; c < d - 1; c++) b += this.distance(a[c], a[c + 1]); return b },
            isClockwise: function(a) { a = this.Uw(a); return d(a) }
        });
        a.Dq = new e;
        a.Aj = new e;
        a.Aj.setCrs("plane")
    })(g);
    g.NK = function() {
        var a = {};
        (function() {
            function b(a) {
                for (var b = 0, e = a.length, f = 0; f < e - 1; f++) var h = a[f],
                    k = a[f + 1],
                    b = b + (k[0] - h[0]) * (k[1] + h[1]);
                if (a[e - 1][0] !== a[0][0] || a[e - 1][1] !== a[0][1]) h = a[e - 1], k = a[0], b += (k[0] - h[0]) * (k[1] + h[1]);
                return 0 >= b
            }
            a.Rra = function(a) { b(a) && (a = [].concat(a), a.reverse()); return a };
            a.i4 = b
        })();
        (function() {
            function b(a) {
                var b = a.length;
                2 < b && a[b - 1][0] == a[0][0] && a[b - 1][1] == a[0][1] && a.pop()
            }

            function c(a, b) { for (var c = 0; c < b.length; c++) a.push(b[c][0]), a.push(b[c][1]) }
            a.Lh = function(a, e) {
                var f =
                    2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : 0,
                    h = arguments[3];
                e = e || [];
                var k = [],
                    l = [];
                b(a);
                c(k, a);
                var m = a.length;
                e.forEach(b);
                for (var n = 0; n < e.length; n++) l.push(m), m += e[n].length, c(k, e[n]);
                l = (this.oK ? this.oK : g.yc.oK)(k, l);
                if (h) { f = []; for (n = 0; n < l.length; n += 1) h = 2 * l[n], f.push([k[h], k[h + 1]]); return f }
                if (f)
                    for (n = 0; n < l.length; n += 1) l[n] += f;
                return l
            }
        })();
        return a
    };
    (function(a) {
        a.BE = function() {
            function a(b, c, d, e, f) {
                for (var h, k = 0, l = c, n = d - e; l < d; l += e) k += (b[n] - b[l]) * (b[l + 1] + b[n + 1]), n = l;
                if (f === 0 < k)
                    for (f = c; f < d; f += e) h = r(f, b[f], b[f + 1], h);
                else
                    for (f = d - e; f >= c; f -= e) h = r(f, b[f], b[f + 1], h);
                h && m(h, h.next) && (s(h), h = h.next);
                return h
            }

            function c(a, b) {
                if (!a) return a;
                b || (b = a);
                var c = a,
                    d;
                do
                    if (d = !1, c.P7 || !m(c, c.next) && 0 !== l(c.Ga, c, c.next)) c = c.next;
                    else {
                        s(c);
                        c = b = c.Ga;
                        if (c === c.next) break;
                        d = !0
                    }
                while (d || c !== b);
                return b
            }

            function d(a, b, e, f, r, u, C) {
                if (a) {
                    if (!C && u) {
                        var F = a,
                            B = F;
                        do null === B.z &&
                            (B.z = h(B.x, B.y, f, r, u)), B.Fo = B.Ga, B = B.Uk = B.next; while (B !== F);
                        B.Fo.Uk = null;
                        B.Fo = null;
                        var F = B,
                            z, H, G, I, K, N, M = 1;
                        do {
                            B = F;
                            G = F = null;
                            for (I = 0; B;) {
                                I++;
                                H = B;
                                for (z = K = 0; z < M && (K++, H = H.Uk, H); z++);
                                for (N = M; 0 < K || 0 < N && H;) 0 !== K && (0 === N || !H || B.z <= H.z) ? (z = B, B = B.Uk, K--) : (z = H, H = H.Uk, N--), G ? G.Uk = z : F = z, z.Fo = G, G = z;
                                B = H
                            }
                            G.Uk = null;
                            M *= 2
                        } while (1 < I)
                    }
                    for (F = a; a.Ga !== a.next;) {
                        B = a.Ga;
                        H = a.next;
                        if (u) a: if (G = a.Ga, I = a.next, 0 <= l(G, a, I)) G = !1;
                            else {
                                K = h(G.x < a.x ? G.x < I.x ? G.x : I.x : a.x < I.x ? a.x : I.x, G.y < a.y ? G.y < I.y ? G.y : I.y : a.y < I.y ? a.y : I.y, f, r, u);
                                M = h(G.x >
                                    a.x ? G.x > I.x ? G.x : I.x : a.x > I.x ? a.x : I.x, G.y > a.y ? G.y > I.y ? G.y : I.y : a.y > I.y ? a.y : I.y, f, r, u);
                                for (z = a.Uk; z && z.z <= M;) {
                                    if (z !== a.Ga && z !== a.next && k(G.x, G.y, a.x, a.y, I.x, I.y, z.x, z.y) && 0 <= l(z.Ga, z, z.next)) { G = !1; break a }
                                    z = z.Uk
                                }
                                for (z = a.Fo; z && z.z >= K;) {
                                    if (z !== a.Ga && z !== a.next && k(G.x, G.y, a.x, a.y, I.x, I.y, z.x, z.y) && 0 <= l(z.Ga, z, z.next)) { G = !1; break a }
                                    z = z.Fo
                                }
                                G = !0
                            }
                        else a: if (G = a.Ga, I = a.next, 0 <= l(G, a, I)) G = !1;
                            else {
                                for (K = a.next.next; K !== a.Ga;) {
                                    if (k(G.x, G.y, a.x, a.y, I.x, I.y, K.x, K.y) && 0 <= l(K.Ga, K, K.next)) { G = !1; break a }
                                    K = K.next
                                }
                                G = !0
                            } if (G) b.push(B.ge /
                            e), b.push(a.ge / e), b.push(H.ge / e), s(a), F = a = H.next;
                        else if (a = H, a === F) {
                            if (C)
                                if (1 === C) {
                                    C = b;
                                    F = e;
                                    B = a;
                                    do H = B.Ga, G = B.next.next, !m(H, G) && n(H, B, B.next, G) && p(H, G) && p(G, H) && (C.push(H.ge / F), C.push(B.ge / F), C.push(G.ge / F), s(B), s(B.next), B = a = G), B = B.next; while (B !== a);
                                    a = B;
                                    d(a, b, e, f, r, u, 2)
                                } else {
                                    if (2 === C) a: {
                                        C = a;do {
                                            for (F = C.next.next; F !== C.Ga;) {
                                                if (B = C.ge !== F.ge)
                                                    if (B = void 0, B = C.next.ge !== F.ge)
                                                        if (B = void 0, B = C.Ga.ge !== F.ge) {
                                                            B = B = void 0;
                                                            b: {
                                                                B = C;do {
                                                                    if (B.ge !== C.ge && B.next.ge !== C.ge && B.ge !== F.ge && B.next.ge !== F.ge && n(B, B.next, C,
                                                                            F)) { B = !0; break b }
                                                                    B = B.next
                                                                } while (B !== C);B = !1
                                                            }
                                                            if (B = !B)
                                                                if (B = void 0, B = p(C, F))
                                                                    if (B = void 0, B = p(F, C)) {
                                                                        B = C;
                                                                        H = !1;
                                                                        G = (C.x + F.x) / 2;
                                                                        I = (C.y + F.y) / 2;
                                                                        do B.y > I !== B.next.y > I && B.next.y !== B.y && G < (B.next.x - B.x) * (I - B.y) / (B.next.y - B.y) + B.x && (H = !H), B = B.next; while (B !== C);
                                                                        B = H
                                                                    }
                                                        }
                                                if (B) {
                                                    a = q(C, F);
                                                    C = c(C, C.next);
                                                    a = c(a, a.next);
                                                    d(C, b, e, f, r, u);
                                                    d(a, b, e, f, r, u);
                                                    break a
                                                }
                                                F = F.next
                                            }
                                            C = C.next
                                        } while (C !== a)
                                    }
                                }
                            else d(c(a), b, e, f, r, u, 1);
                            break
                        }
                    }
                }
            }

            function e(a, b) { return a.x - b.x }

            function f(a, b) {
                var c = b,
                    d = a.x,
                    e = a.y,
                    f = -Infinity,
                    h;
                do {
                    if (e <= c.y && e >= c.next.y &&
                        c.next.y !== c.y) {
                        var l = c.x + (e - c.y) * (c.next.x - c.x) / (c.next.y - c.y);
                        if (l <= d && l > f) {
                            f = l;
                            if (l === d) { if (e === c.y) return c; if (e === c.next.y) return c.next }
                            h = c.x < c.next.x ? c : c.next
                        }
                    }
                    c = c.next
                } while (c !== b);
                if (!h) return null;
                if (d === f) return h.Ga;
                for (var l = h, m = h.x, n = h.y, r = Infinity, s, c = h.next; c !== l;) d >= c.x && c.x >= m && d !== c.x && k(e < n ? d : f, e, m, n, e < n ? f : d, e, c.x, c.y) && (s = Math.abs(e - c.y) / (d - c.x), (s < r || s === r && c.x > h.x) && p(c, a) && (h = c, r = s)), c = c.next;
                return h
            }

            function h(a, b, c, d, e) {
                a = 32767 * (a - c) * e;
                b = 32767 * (b - d) * e;
                a = (a | a << 8) & 16711935;
                a = (a | a << 4) & 252645135;
                a = (a | a << 2) & 858993459;
                b = (b | b << 8) & 16711935;
                b = (b | b << 4) & 252645135;
                b = (b | b << 2) & 858993459;
                return (a | a << 1) & 1431655765 | ((b | b << 1) & 1431655765) << 1
            }

            function k(a, b, c, d, e, f, h, k) { return 0 <= (e - h) * (b - k) - (a - h) * (f - k) && 0 <= (a - h) * (d - k) - (c - h) * (b - k) && 0 <= (c - h) * (f - k) - (e - h) * (d - k) }

            function l(a, b, c) { return (b.y - a.y) * (c.x - b.x) - (b.x - a.x) * (c.y - b.y) }

            function m(a, b) { return a.x === b.x && a.y === b.y }

            function n(a, b, c, d) { return m(a, b) && m(c, d) || m(a, d) && m(c, b) ? !0 : 0 < l(a, b, c) !== 0 < l(a, b, d) && 0 < l(c, d, a) !== 0 < l(c, d, b) }

            function p(a,
                b) { return 0 > l(a.Ga, a, a.next) ? 0 <= l(a, b, a.next) && 0 <= l(a, a.Ga, b) : 0 > l(a, b, a.Ga) || 0 > l(a, a.next, b) }

            function q(a, b) {
                var c = new u(a.ge, a.x, a.y),
                    d = new u(b.ge, b.x, b.y),
                    e = a.next,
                    f = b.Ga;
                a.next = b;
                b.Ga = a;
                c.next = e;
                e.Ga = c;
                d.next = c;
                c.Ga = d;
                f.next = d;
                d.Ga = f;
                return d
            }

            function r(a, b, c, d) {
                a = new u(a, b, c);
                d ? (a.next = d.next, a.Ga = d, d.next.Ga = a, d.next = a) : (a.Ga = a, a.next = a);
                return a
            }

            function s(a) {
                a.next.Ga = a.Ga;
                a.Ga.next = a.next;
                a.Fo && (a.Fo.Uk = a.Uk);
                a.Uk && (a.Uk.Fo = a.Fo)
            }

            function u(a, b, c) {
                this.ge = a;
                this.x = b;
                this.y = c;
                this.Uk = this.Fo =
                    this.z = this.next = this.Ga = null;
                this.P7 = !1
            }
            return {
                oK: function(h, k, l) {
                    l = l || 2;
                    var m = k && k.length,
                        n = m ? k[0] * l : h.length,
                        p = a(h, 0, n, l, !0),
                        r = [];
                    if (!p) return r;
                    var s, u, z, H;
                    if (m) {
                        var G = l,
                            m = [],
                            I, K, N;
                        H = 0;
                        for (I = k.length; H < I; H++) {
                            K = k[H] * G;
                            N = H < I - 1 ? k[H + 1] * G : h.length;
                            K = a(h, K, N, G, !1);
                            K === K.next && (K.P7 = !0);
                            var M = N = K;
                            do N.x < M.x && (M = N), N = N.next; while (N !== K);
                            m.push(M)
                        }
                        m.sort(e);
                        for (H = 0; H < m.length; H++) {
                            k = m[H];
                            G = p;
                            if (G = f(k, G)) k = q(G, k), c(k, k.next);
                            p = c(p, p.next)
                        }
                    }
                    if (h.length > 80 * l) {
                        s = z = h[0];
                        u = m = h[1];
                        for (G = l; G < n; G += l) H = h[G], k =
                            h[G + 1], H < s && (s = H), k < u && (u = k), H > z && (z = H), k > m && (m = k);
                        z = Math.max(z - s, m - u);
                        z = 0 !== z ? 1 / z : 0
                    }
                    d(p, r, l, s, u, z);
                    return r
                }
            }
        };
        a.F9 = a.BE()
    })(g);
    (function(a) {
        function b(a) {
            var b = a.length;
            2 < b && a[b - 1][0] == a[0][0] && a[b - 1][1] == a[0][1] && a.pop()
        }

        function c(a, b) { for (var c = 0; c < b.length; c++) a.push(b[c][0]), a.push(b[c][1]) }
        a.yn = {
            ci: function(a) { for (var b = a.length, c = 0, h = b - 1, k = 0; k < b; h = k++) c += a[h][0] * a[k][1] - a[k][0] * a[h][1]; return 0.5 * c },
            i4: function(b) { return 0 > a.yn.ci(b) },
            normalize: function(b) {
                var c;
                if (b) {
                    c = [];
                    for (var f = 0, h = b.length; f < h; f += 1) c[f] = b[f] instanceof Array ? this.normalize(b[f]) : b[f] instanceof a.T ? [b[f].Q, b[f].P] : b[f] instanceof a.H ? [b[f].x, b[f].y] :
                        b[f]
                }
                return c
            },
            Lh: function(d, e) {
                e = e || [];
                var f = [],
                    h = [];
                b(d);
                c(f, d);
                var k = d.length;
                e.forEach(b);
                for (var l = 0; l < e.length; l++) h.push(k), k += e[l].length, c(f, e[l]);
                return a.F9.oK(f, h)
            }
        }
    })(g);
    g.wH = function(a, b, c) {
        g.c.add({ CLASS_NAME: "convertFrom" }, b);
        var d = g.A.Rd + "/v3/assistant/coordinate/convert";
        a = g.a.Ia(a);
        var e = [];
        if (a instanceof Array) {
            for (var f = 0, h = a.length; f < h; f += 1) e.push(a[f] + "");
            e = e.join(";")
        } else e = a + "";
        b = ["key=" + g.A.key, "s=rsv3", "locations=" + e, "coordsys=" + (b || "gps")];
        d += 0 < b.length ? "?" + b.join("&") : "";
        d = new g.fb.vb(d, { callback: "callback" });
        d.g("complete", function(a) {
            if ("1" === a.status) {
                a = a.locations.split(";");
                for (var b = 0; b < a.length; b += 1) {
                    var d = a[b].split(",");
                    a[b] = new AMap.LngLat(d[0],
                        d[1])
                }
                c && "function" === typeof c && c("complete", { info: "ok", locations: a })
            } else c && "function" === typeof c && c("error", a.info)
        }, this);
        d.g("error", function(a) { c && "function" === typeof c && c("error", a.info) }, this)
    };
    g.fb = g.fb || {};
    g.fb.hL = g.aa.extend({
        ja: [g.sa],
        r: function(a, b) {
            this.B = { callback: "cbk", type: "json", charset: "utf-8" };
            b = b || {};
            g.a.Db(this, b);
            this.url = a;
            this.send(a, b.Sc, b.D1, b.jT, b.responseType)
        },
        send: function(a) {
            var b = g.h.create("script");
            b.type = "text/javascript";
            b.charset = this.B.charset;
            var c = this;
            g.l.ue ? b.onreadystatechange = function() { "loaded" !== this.readyState && "complete" !== this.readyState || c.q("complete") } : (b.onload = function() { c.q("complete") }, b.onerror = function() { c.q("error", { status: 0, info: "service error", url: a }) });
            b.src = a;
            document.getElementsByTagName("head")[0].appendChild(b)
        }
    });
    g.fb.vb = g.fb.hL.extend({
        Bla: function() { if (g.a.l7) return g.a.gK.push(this), !0 },
        dva: function() { this.q("error", { info: "TIME_OUT_A" }) },
        send: function(a, b, c, d) {
            function e() {
                window[f] = null;
                try { window[f] = null } catch (a) {}
                h.onerror = null;
                h.parentNode && h.parentNode.removeChild(h)
            }
            if (!this.B.wx || !this.Bla()) {
                a = encodeURI(a);
                var f = this.B.fun;
                if (!f || window[f]) f = g.a.O2("jsonp_", 6) + "_";
                var h = document.createElement("script");
                h.type = "text/javascript";
                h.charset = "utf-8";
                h.async = !0;
                var k = this;
                g.l.ue || (h.onerror = function() {
                    e();
                    k.q("error", { info: "REQUEST_FAILED", url: a })
                });
                window[f] = function(a) {
                    e();
                    if (k.B.callbackFunction) k.B.callbackFunction.call(k.B.context, a);
                    else if (3E4 === a.errcode && a.data) g.a.l7 = !0, g.qb.load("AMap.AntiCrabFrame", function() {
                        g.a.wx || (g.a.wx = new g.q9);
                        g.a.gK.push(k);
                        g.a.wx.open(k.B.Sc, a.data.host, k.rD || "", k.url)
                    });
                    else {
                        if (a instanceof Array || "string" === typeof a) a = { data: a };
                        a.cCa = f;
                        k.q("complete", a)
                    }
                };
                b = "?"; - 1 !== a.indexOf("?") && (b = "&");
                b = a + b + this.B.callback + "=" + f;
                if (-1 !== a.indexOf(g.A.Rd + "/v") || -1 !== a.indexOf("yuntuapi.amap.com/datasearch") ||
                    -1 !== a.indexOf("webapi.amap.com/")) b = b + "&platform=JS&logversion=2.0" + ("&appname=" + g.A.Qt), b += "&csid=" + g.a.T8(), b += "&sdkversion=" + g.A.cr;
                if (c = this.B.KH) {
                    var l = [],
                        m;
                    for (m in c) c.hasOwnProperty(m) && (l.push(m + "=" + c[m]), b += "&" + m + "=" + encodeURIComponent(c[m]));
                    k.rD = l.join("&")
                }
                h.src = d ? b + "&rereq=true" : b;
                g.fb.vb.zca = document.getElementsByTagName("body")[0] || document.getElementsByTagName("head")[0];
                g.fb.vb.zca.appendChild(h)
            }
        }
    });
    g.fb.XMLHttpRequest = g.fb.hL.extend({
        send: function(a, b, c, d, e) {
            var f = this;
            if ((g.l.ue || g.l.P3) && window.XDomainRequest) {
                var h = this.j9 = new XDomainRequest;
                h.onerror = function(b) { f.q("error", { url: a, data: b }) };
                h.onload = function() { f.q("complete", { url: a, data: h.responseText }) };
                h.open(b || "GET", a);
                setTimeout(function() { h.send(c || void 0) }, 0)
            } else {
                var k = this.j9 = new XMLHttpRequest;
                k.onreadystatechange = function() {
                    4 === k.readyState && 200 === k.status ? f.q("complete", { url: a, data: "arraybuffer" === k.responseType ? k.response : k.responseText }) :
                        404 === k.status && (k.abort(), f.q("error", { url: a, data: "404" }))
                };
                k.onerror = function(b) {
                    k.abort();
                    f.q("error", { url: a, data: b })
                };
                k.open(b || "GET", a);
                "POST" === b && k.setRequestHeader("Content-Type", d || "application/x-www-form-urlencoded");
                e && (k.responseType = e);
                k.send(c || void 0)
            }
        },
        abort: function() { this.j9.abort() }
    });
    for (var Z = {
            v: "1.4.14",
            Pixel: g.H,
            LngLat: g.T,
            Size: g.ud,
            Bounds: g.me,
            ArrayBounds: g.No,
            PixelBounds: g.Ff,
            Panorama: g.v$,
            PanoramaMarker: g.w$,
            Map: A.Jb,
            View2D: A.ZE,
            GroundImage: A.o.OK,
            Marker: A.w.rb,
            ImageMarker: A.w.Mya,
            Text: A.w.BV,
            Icon: A.w.Th,
            MarkerShape: A.w.n$,
            Polyline: A.w.Vb,
            BezierCurve: A.w.Iz,
            Polygon: A.w.Ec,
            Circle: A.w.Ug,
            CircleMarker: A.w.PU,
            Ellipse: A.w.Vs,
            Rectangle: A.w.at,
            ContextMenu: A.w.un,
            InfoWindow: A.w.Oe,
            Buildings: A.o.v9,
            TileLayer: A.o.ob,
            ImageLayer: A.o.Rz,
            CanvasLayer: A.o.x9,
            VideoLayer: A.o.aaa,
            VectorLayer: A.o.$c,
            MassMarks: A.o.p$,
            CompositeLayer: A.o.B9,
            LabelsLayer: A.o.Eq,
            LabelMarker: A.w.g$,
            LayerGroup: A.o.TK,
            OverlayGroup: A.w.wn,
            GeoJSON: A.w.ZU,
            CANVAS: "canvas",
            DOM: "dom",
            convertFrom: g.wH,
            Http: { JSONP: g.fb.vb },
            event: { CLASS_NAME: "AMap.event" }
        }, wc = "addDomListener addDomListenerOnce addListener addListenerOnce clearInstanceListeners clearListeners removeListener trigger".split(" "), xc = 0; xc < wc.length; xc += 1) Z.event[wc[xc]] = function() {
        var a = g.event[wc[xc]],
            b = wc[xc];
        return function() {
            g.c.ya(Z.event);
            g.c.add(Z.event, b);
            return a.apply(g.event, Array.prototype.slice.call(arguments))
        }
    }();
    Z.GeometryUtil = { CLASS_NAME: "AMap.GeometryUtil" };
    for (var Hc = "distance ringArea isClockwise makesureClockwise makesureAntiClockwise distanceOfLine ringRingClip doesSegmentsIntersect doesSegmentLineIntersect doesSegmentRingIntersect doesSegmentPolygonIntersect doesLineLineIntersect doesLineRingIntersect doesPolygonPolygonIntersect doesRingRingIntersect isPointInRing isRingInRing isPointInPolygon isPointOnSegment isPointOnLine isPointOnRing isPointOnPolygon closestOnSegment closestOnLine distanceToSegment distanceToLine distanceToPolygon".split(" "), xc =
            0; xc < Hc.length; xc += 1) Z.GeometryUtil[Hc[xc]] = function() {
        var a = g.Dq[Hc[xc]],
            b = Hc[xc];
        return function() {
            g.c.ya(Z.GeometryUtil);
            g.c.add(Z.GeometryUtil, b);
            return a.apply(g.Dq, Array.prototype.slice.call(arguments))
        }
    }();
    Z.GeometryUtil.triangulateShape = function(a, b) {
        g.c.ya(Z.GeometryUtil);
        g.c.add(Z.GeometryUtil, "triangulateShape");
        a = g.yn.normalize(a);
        b = g.yn.normalize(b);
        return g.yn.Lh(a, b)
    };
    Z.PlaneGeometryUtil = { CLASS_NAME: "AMap.PlaneGeometryUtil" };
    for (xc = 0; xc < Hc.length; xc += 1) Z.PlaneGeometryUtil[Hc[xc]] = function() {
        var a = g.Aj[Hc[xc]],
            b = Hc[xc];
        return function() {
            g.c.ya(Z.PlaneGeometryUtil);
            g.c.add(Z.PlaneGeometryUtil, b);
            return a.apply(g.Aj, Array.prototype.slice.call(arguments))
        }
    }();
    Z.PlaneGeometryUtil.triangulateShape = function(a, b) {
        g.c.ya(Z.PlaneGeometryUtil);
        g.c.add(Z.PlaneGeometryUtil, "triangulateShape");
        a = g.yn.normalize(a);
        b = g.yn.normalize(b);
        return g.yn.Lh(a, b)
    };
    Z.plugin = Z.service = A.Jb.prototype.plugin;
    Z.TileLayer.Satellite = A.o.ob.vV;
    Z.TileLayer.RoadNet = A.o.ob.tV;
    Z.TileLayer.google = A.o.ob.FE;
    Z.TileLayer.Flexible = A.o.ob.Oz;
    Z.TileLayer.WMS = A.o.ob.baa;
    Z.TileLayer.WMTS = A.o.ob.caa;
    Z.TileLayer.Traffic = A.o.ob.DV;
    Z.Panorama.Events = A.event;
    Z.TileLayer.PanoramaLayer = A.o.ob.Uya;
    Z.UA = { ie: g.l.Qr, ielt9: g.l.ue, ielt11: g.l.gqa, mobile: g.l.Z, android: g.l.Bl, ios: g.l.FI };
    Z.Browser = {
        ua: navigator.userAgent,
        mobile: g.l.Z,
        plat: g.l.Qy,
        mac: g.l.Cy,
        windows: g.l.fya,
        ios: g.l.FI,
        iPad: g.l.$pa,
        iPhone: g.l.aqa,
        android: g.l.Bl,
        android23: g.l.yka,
        chrome: g.l.chrome,
        firefox: g.l.cQ,
        safari: g.l.MD,
        wechat: g.l.b9,
        uc: g.l.wxa,
        qq: g.l.iua,
        ie: g.l.Qr,
        ie6: g.l.mi,
        ie7: g.l.Iu,
        ie8: g.l.ue && !g.l.Iu && !g.l.mi,
        ie9: g.l.P3,
        ie10: g.l.O3,
        ie11: g.l.dqa,
        edge: g.l.Gna,
        ielt9: g.l.ue,
        baidu: g.l.eH,
        isLocalStorage: g.l.Zr,
        isGeolocation: !!navigator.geolocation,
        mobileWebkit: g.l.ksa,
        mobileWebkit3d: g.l.m5,
        mobileOpera: !!g.l.jsa,
        retina: g.l.Mc,
        touch: !!g.l.Bf,
        msPointer: !!g.l.o5,
        pointer: !!g.l.AS,
        webkit: g.l.Z8,
        ie3d: g.l.eqa,
        webkit3d: g.l.a9,
        gecko3d: g.l.uoa,
        opera3d: g.l.dta,
        any3d: g.l.$G,
        isCanvas: g.l.Nk,
        isSvg: g.l.so,
        isVML: g.l.Qr,
        isWorker: !!window.Worker,
        isWebsocket: !!window.WebSocket,
        isWebGL: function() {
            for (var a = document.createElement("canvas"), b = ["webgl", "experimental-webgl", "moz-webgl"], c = null, d = 0; d < b.length; d += 1) {
                try { c = a.getContext(b[d]) } catch (e) {}
                if (c)
                    if (c.drawingBufferWidth !== a.width || c.drawingBufferHeight !== a.height) break;
                    else return !0
            }
            return !1
        }
    };
    Z.Util = { CLASS_NAME: "AMap.Util" };
    var Ic = { colorNameToHex: g.a.rH, rgbHex2Rgba: g.a.Y6, argbHex2Rgba: g.a.gr, isEmpty: g.a.Pk, deleteItemFromArray: g.a.Nx, deleteItemFromArrayByIndex: g.a.ao, indexOf: g.a.indexOf, format: g.a.lc, isArray: g.a.isArray, isDOM: g.a.JI, includes: g.a.ja, requestIdleCallback: g.a.kT, cancelIdleCallback: g.a.ZO, requestAnimFrame: g.a.Qc, cancelAnimFrame: g.a.fi, color2RgbaArray: g.a.Rm, color2Rgba: g.a.fma };
    for (xc in Ic) Ic.hasOwnProperty(xc) && "function" == typeof Ic[xc] && (Z.Util[xc] = function() {
        var a = xc;
        return function() {
            g.c.ya(Z.Util);
            g.c.add(Z.Util, a);
            return Ic[a].apply(g.a, Array.prototype.slice.call(arguments))
        }
    }());
    Z.DomUtil = { CLASS_NAME: "AMap.DomUtil" };
    var Jc = { getViewport: g.h.qI, getViewportOffset: g.h.QQ, create: g.h.create, setClass: g.h.Ava, hasClass: g.h.$m, addClass: g.h.Ra, removeClass: g.h.ab, setOpacity: g.h.hq, rotate: g.h.rotate, setCss: g.h.Va, empty: g.h.FD, remove: g.h.remove, TRANSFORM: g.h.dg, TRANSITION: g.h.VE };
    for (xc in Jc) Jc.hasOwnProperty(xc) && "function" == typeof Jc[xc] && (Z.DomUtil[xc] = function() {
        var a = xc;
        return function() {
            g.c.ya(Z.DomUtil);
            g.c.add(Z.DomUtil, a);
            return Jc[a].apply(g.h, Array.prototype.slice.call(arguments))
        }
    }());
    var Kc = g.A;
    Z.User = { key: Kc.key };
    window.AMap = Z;
    window.AMap.BuryPoint = g.BuryPoint;
    window.AMap.Class = g.aa;
    if (!Kc.YC && "undefined" !== typeof arguments && arguments.callee) try {
        if (g.l.Zr && window.localStorage) {
            var Lc = window.localStorage["_AMap_" + g.bJ];
            Lc && JSON.parse(Lc).version === Kc.vj || window.localStorage.setItem("_AMap_" + g.bJ, JSON.stringify({ version: Kc.vj, script: "(" + arguments.callee + ")(config)" }));
            new g.fb.XMLHttpRequest(Kc.yb + "/maps/cookie?key=amap_ver&value=" + Kc.vj, { Sc: "GET", jT: "text/plain" })
        }
    } catch (Mc) {};
    g.wj = g.aa.extend({
        r: function(a, b, c, d) {
            this.start = a;
            this.end = b;
            this.transition = c;
            this.precision = d || 0;
            this.ov = !1;
            this.update = g.a.bind(this.update, this);
            return this
        },
        pn: function(a) {
            this.Yg = this.startTime = +new Date;
            this.frames = 0;
            this.ov = !0;
            this.E0 = g.a.Qc(this.update);
            this.mha = g.a.bind(this.Wp, a || this)
        },
        update: function() {
            this.frames += 1;
            var a = +new Date,
                b = a - this.startTime,
                b = this.transition ? this.transition(this.start, this.end, b, this.frames, a - this.Yg) : null;
            "number" === typeof b && Math.abs(b - this.end) < this.precision ?
                (this.stop(), b = this.end) : this.E0 = g.a.Qc(this.update);
            this.Yg = a;
            this.mha(b)
        },
        stop: function(a) {
            g.a.fi(this.E0);
            a && this.update();
            this.ov = !1
        }
    });
    g.wj.Easing = { Linear: { None: function(a) { return a } }, Bounce: { In: function(a) { return 1 - (a < 1 / 2.75 ? 7.5625 * a * a : a < 2 / 2.75 ? 7.5625 * (a -= 1.5 / 2.75) * a + 0.75 : a < 2.5 / 2.75 ? 7.5625 * (a -= 2.25 / 2.75) * a + 0.9375 : 7.5625 * (a -= 2.625 / 2.75) * a + 0.984375) }, Out: function(a) { return g.wj.Easing.Bounce.In(1 - a) } }, Cubic: { In: function(a) { return 1 - a * a * a }, Out: function(a) { a = 1 - a; return 1 - a * a * a } } };
    g.Jb = g.aa.extend({
        ja: [g.sa, g.Pe, g.VI],
        r: function(a, b) {
            this.fc = g.a.bind(this.fc, this);
            this.D = b;
            this.$i = b.$i;
            this.em = "";
            this.Xg = this.yg = this.Dk = !1;
            this.Cn = {};
            this.J = a;
            this.pfa();
            this.Aqa();
            this.W("zooms", b, !0);
            this.W("size", b, !0);
            this.W("limitBounds", b);
            this.W("view", b);
            this.W("nolimg", b, !0);
            this.W("mapNumber", b, !0);
            this.W("lang", b, !0);
            this.W("features", b, !0);
            this.W("styleID", b, !0);
            this.W("forceBig", b, !0);
            this.W("mode", b, !0);
            this.W("showBuildingBlock", b, !0);
            this.W("mapStyle", b);
            var c = this.get("mapStyle");
            this.pe = g.A.pe[c] || g.A.pe["default"];
            this.TG = "#a3ccff";
            this.tB = b.get("skyColor") || "#cce0ff";
            this.W("editEnable", b);
            this.od ? this.W("style", b, !0) : this.W("styleUrl", b);
            this.W("hightlight", b, !0);
            this.W("labelzIndex", b, !0);
            if (g.l.fK) {
                c = new A.o.ob({ innerLayer: !0, zIndex: b.get("labelzIndex"), visible: !1 });
                this.Ac = new g.o.Cj(c, this, ["point", "road"]);
                this.Ac.type = "\u77e2\u91cf\u6807\u6ce8";
                var d = this.D.get("defaultLayer");
                d && c.W("rejectMapMask", d, !0);
                b.labelsLayer = this.Ac.V;
                this.Ac.V.g("complete", this.Qq, this, !0);
                this.Ac.V.g("renderComplete", this.Qq, this);
                this.Ac.NA = this.Ac.Ig = !0
            }
            this.W("isHotspot", b, !0);
            this.W("layers", b);
            this.W("overlays", b);
            this.W("infos", b, !0);
            this.W("contextmenus", b, !0);
            this.W("controls", b);
            this.W("bounds", b);
            this.W("draw", b);
            this.Qe("zoomAndCenter destroy defaultCursor jogEnable animateEnable baseRender overlayRender gridMapForeign vectorMapForeign".split(" "), b);
            this.Qe("rotateEnable pitchEnable dragEnable keyboardEnable doubleClickZoom scrollWheel zoomEnable touchZoom".split(" "),
                b, !0);
            this.get("jogEnable") ? this.Ku = !0 : this.Ku = !1;
            this.Dea();
            this.Kea();
            this.jY && this.jY();
            this.W("resizeEnable", b);
            this.D.map = this;
            c = this.get("size");
            c = c.width * c.height / 65536;
            g.l.Mc && 3 < c && (this.M0 = !0);
            this.U = { Pd: !1 };
            this.NJ()
        },
        editEnableChanged: function() { this.od = this.get("editEnable") },
        labelzIndexChanged: function() { this.Ac && this.Ac.set("zIndex", this.get("labelzIndex")) },
        styleChanged: function() { this.Sk = !0 },
        mapStyleChanged: function() {
            if (this.D.oi) {
                this.em && (this.set("style", ""), this.eu = this.em = "");
                var a = this.get("mapStyle");
                this.Sk = !0;
                this.pe = g.A.pe[a] || g.A.pe["default"];
                this.ED()
            }
        },
        styleUrlChanged: function() {
            if (this.D.oi) {
                var a = this.get("styleUrl") || "";
                if (a !== this.em) {
                    var b = -1 !== a.indexOf("?isPublic=true"),
                        a = a.substr(0, 46),
                        c = a.split("amap://styles/")[1];
                    "normal" === c ? (this.em = "", this.set("nolimg", !!this.D.get("nolimg_param")), this.set("style", ""), this.eu = "") : (this.tz = !0, this.set("nolimg", !0), b = new g.fb.vb(32 > c.length ? g.A.Bc + "://webapi.amap.com/style?name=" + c + "&key=" + g.A.key : g.A.Bc + "://webapi.amap.com/v4/map/styles?styleid=" +
                        c + "&s=rsv3&key=" + g.A.key + (b ? "&ispublic=1" : ""), { callback: "callback" }), b.g("complete", function(a) {
                        a.data && a.data.content ? this.set("style", JSON.parse(a.data.content)) : this.set("style", "");
                        this.tz = !1
                    }, this), b.g("error", function() { this.tz = !1 }, this), this.em = a, this.ED())
                }
            }
        },
        n7: function(a) { this.J.style.background = a },
        woa: function(a) {
            var b = this.get("center");
            if (a.contains(b)) return null;
            a = g.Dq.closestOnLine(b, a.XT().path);
            return new g.T(a[0], a[1])
        },
        Dla: function() {
            var a = this.get("limitBounds"),
                b = this.get("bounds");
            b.xc && b.xc.Q > b.nc.Q && (b.nc.Q += 360);
            if (!a.contains(b)) {
                if (b instanceof g.No) return this.woa(a, b);
                var c = this.get("center").jb();
                a.hj() < b.hj() ? c.Q = a.ki().Q : (a.xc.Q > b.xc.Q && (c.Q += a.xc.Q - b.xc.Q), a.nc.Q < b.nc.Q && (c.Q += a.nc.Q - b.nc.Q));
                a.fj() < b.fj() ? c.P = a.ki().P : (a.xc.P > b.xc.P && (c.P += a.xc.P - b.xc.P), a.nc.P < b.nc.P && (c.P += a.nc.P - b.nc.P));
                return c
            }
        },
        UN: function() {
            var a = this.HT;
            this.D.refreshSize();
            var b = this.get("size");
            b && a && !b.cb(a) && (this.HT = b, this.uv = !0, this.set("display"), this.V6(b), this.get("resizeEnable") &&
                this.ma("resize", { Dsa: a, w5: b }))
        },
        $Z: function() {
            var a = this;
            a.UN();
            a.ON = setTimeout(function() { a.$Z() }, 200)
        },
        Hba: function() { this.ON && (clearTimeout(this.ON), this.ON = null) },
        pfa: function() {
            this.D.C = !0;
            this.HT = this.D.getSize();
            this.D.C = !1;
            if (g.l.ue || g.l.b9 && g.l.FI || g.l.$ra) this.$Z();
            else {
                var a = this;
                g.F.ska(this.J, function(b) { a.UN(b) })
            }
        },
        Aqa: function() {
            var a = this.J;
            g.h.Ra(a, "amap-container");
            var b = {};
            b.Yc = g.h.create("div", a, "amap-maps");
            this.rl = g.h.create("div", a);
            this.rl.style.display = "none";
            b.lr = g.h.create("div",
                b.Yc, "amap-drags");
            b.o = g.h.create("div", b.lr, "amap-layers");
            b.w = g.h.create("div", b.lr, "amap-overlays");
            b.controls = g.h.create("div", a, "amap-controls");
            b.Wu = g.h.create("a", a, "amap-logo");
            var c = window.location.host; - 1 === c.indexOf("amap.com") && -1 === c.indexOf("gaode.com") && (b.Wu.href = g.l.Z ? "http://m.amap.com" : "http://gaode.com", b.Wu.target = "_blank");
            g.h.create("img", b.Wu).src = g.l.Mc ? this.D.B.logoUrlRetina : this.D.B.logoUrl;
            b.Sm = g.h.create("div", a, "amap-copyright");
            b.Sm.style.display = "none";
            350 < g.h.qI(this.J).width &&
                (b.Sm.innerHTML = this.D.B.copyright, b.Sm.a5 = g.h.create("span", b.Sm, "amap-mcode"), this.ED());
            this.Sa = b
        },
        ED: function() {
            var a = this.get("layers");
            if (a) {
                for (var b = -1, c = "", d = 0; d < a.length; d += 1) {
                    var e = a[d].get("mapNumber"),
                        f = a[d].get("zIndex", null, !0);
                    e && f > b && a[d].get("visible") && (c = e, b = f)
                }
                this.set("mapNumber", c);
                this.D.C = !0;
                a = this.D.getMapStyle();
                this.D.C = !1;
                "GS(2018)1709" === c && a && "normal" !== a && "amap://styles/normal" !== a && (c = "", this.Sa.Sm.style.visibility = "hidden", this.Sa.Wu.style.display = "none");
                c && this.Sa.Sm.a5 &&
                    (this.Sa.Sm.a5.innerHTML = "- " + c + "\u53f7", this.Sa.Sm.style.visibility = "visible", this.Sa.Wu.style.display = "block");
                return c
            }
        },
        pX: function() {
            var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : !1;
            g.Bj && (a ? g.Bj.flush() : this.r2 || (this.r2 = g.a.Qc(function() {
                g.Bj.flush();
                this.r2 = null
            }, this)))
        },
        YS: function(a) {
            var b = this,
                c = this.D.get("rasterLayer");
            c && (this.D.set("rasterLayer", void 0), this.D.B6 = !0, this.D.$j = this.D.La, this.Ll.vI = !1, c.o && (c.o.hD = !0), a || (this.ZS = g.a.kT(function() {
                b.ZS = null;
                b.D && b.D.ak(c)
            })));
            a && this.ZS && g.a.ZO(this.ZS)
        },
        Qq: function() {
            function a() {
                for (var a = d.get("layers"), b = d.get("zoom"), c = 0; c < a.length; c += 1) { var e = a[c].get("zooms"); if (!(a[c].$j || a[c].Y3 || !e || b > e[1] || b < e[0] || !a[c].get("visible") || a[c].o && a[c].o.ga && 0 === a[c].o.ga.length || a[c].o && a[c].o.hD || a[c].o && a[c].o.La)) return !1 }
                a = d.D.get("features");
                return ("all" === a || g.a.ja(a, "point")) && d.Ac && d.Ac.get("visible") && 0 < d.Ac.ga.length && !d.Ac.La && !d.Ac.GN ? !1 : !0
            }

            function b() {
                var a = { id: d.D.id };
                g.oe.Ze.end(g.extend(a, { key: "rds" }));
                g.oe.Ze.send(g.extend(a, { params: { rs: d.get("baseRender"), viewmode: d.D.view.type, fd: 0 === d.SI ? 1 : 0, raster: d.D.$j ? 1 : 0 } }));
                d.D && d.D.Wl && d.D.Wl.dB && d.D.Wl.dB();
                d.D.u6 = 1;
                d.pX();
                d.set("display");
                d.WC = !0
            }

            function c() {
                g.oe.Ze.end({ id: d.D.id, key: "rd" });
                g.a.Qc(function() { this.q("complete") }, d);
                d.D.La = !0;
                d.set("display")
            }
            if (!this.BP)
                if (this.WC) 1 === this.it && 13 === this.get("zoom") && (g.a.xC.stop(this.FF), g.oe.Ze.send({ id: this.D.id, params: { fps: this.FF.xC, type: "fps", rs: this.get("baseRender") } }), this.it = 2), this.pX();
                else {
                    var d = this,
                        e = this.D.get("rasterLayer"),
                        f = a();
                    e ? (e.o && e.o.La && (this.D.La || c()), f && (this.D.La || c(), this.YS(), b())) : f && (this.D.La || c(), b(), this.D.B6 = !0)
                }
        },
        layersChanged: function() {
            this.ra = this.ra || [];
            for (var a = this.get("layers"), b = this.ra.length - 1; 0 <= b; b -= 1) this.ra[b] === this.td || this.ra[b] === this.os || this.ra[b].NA || this.ra[b].V.NA || -1 !== g.a.indexOf(a, this.ra[b].V) || (this.ra[b].Pg(), this.ra[b].$k && this.ra[b].$k.Pg(), this.ra[b].V.G("complete", this.Qq, this), this.ra[b].V.G("renderComplete", this.Qq, this), this.ra = g.a.ao(this.ra, b));
            for (var c = !1,
                    d = !0, e = this.get("labelzIndex"), b = 0; b < a.length; b += 1)
                if (!a[b].Y3)
                    if (a[b].ei) - 1 === g.a.indexOf(this.ra, a[b].o) && this.ra.push(a[b].o);
                    else {
                        var f = this.Lf(a[b]);
                        f && (this.ra.push(f), a[b].ei = !0, a[b].o = f);
                        a[b].g("complete", this.Qq, this, !0);
                        a[b].g("renderComplete", this.Qq, this)
                    }
            for (b = 0; b < this.ra.length; b += 1) f = this.ra[b].V, f.Tp && f.get("visible") && (c = !0, !1 === f.get("detectRetina") && (d = !1), e = f.get("textIndex") || e);
            this.Ac && (c || "3D" !== this.D.view.type ? this.Ac.GN = !1 : (c = g.a.find(a, function(a) {
                if (A.o.Xs && a instanceof A.o.Xs && a.get("visible")) return !0
            }), this.Ac.GN = c = !!c));
            a = g.a.indexOf(this.ra, this.Ac);
            c && this.D.get("showLabel") ? (-1 === a && this.ra.push(this.Ac), this.Ac.ia = d && g.l.ia, this.Ac.RB(this.get("mapStyle") || "normal"), this.Ac.set("zIndex", e), this.Ac.set("visible", !0), this.D.HC = !0, this.D.get("isHotspot") ? this.Ac.Xsa() : this.Ac.iP()) : (this.Ac && (this.Ac.set("visible", !1), this.D.HC = !1, this.Ac.iP()), this.D.HC = !1);
            this.D.isHotspotChanged();
            this.set("display", 0);
            this.ED()
        },
        isHotspotChanged: function() { this.layersChanged() },
        controlsChanged: function() {
            var a = this.get("controls"),
                b, c;
            if (a.add && 0 < a.add.length)
                for (; 0 < a.add.length;) b = a.add.shift(), (c = b.Nt || b.addTo) && c.call(b, this.D, this.Sa.controls);
            else if (a.remove && a.remove.length)
                for (; 0 < a.remove.length;) b = a.remove.shift(), (c = b.kv || b.removeFrom) && c.call(b, this.D, this.Sa.controls)
        },
        l0: function() {
            if (!this.BP) {
                var a = this;
                this.q0 = !1;
                a.td || (a.td = new g.o.$c(new A.o.$c, a), a.td.lf = 36, a.td.Xf = 36, a.td.set("zIndex", 120), a.ra.push(a.td), a.td.lC = !0);
                for (var b = a.get("overlays"), c = [],
                        d = 0; d < a.hd.length; d += 1) - 1 === g.a.indexOf(b, a.hd[d].Wb) && (a.hd[d].Wb instanceof A.w.Oe || a.hd[d].Wb instanceof A.w.un ? a.hd[d].Pg() : (a.td && a.hd[d] instanceof g.w.rb ? (a.td.Ng = g.a.Nx(a.td.Ng, a.hd[d].L), a.td.I6([a.hd[d].L])) : a.os && a.os.I6([a.hd[d].L]), a.hd[d].L.ba ? (g.h.remove(a.hd[d].L.ba), a.hd[d].L.ba = null) : a.hd[d].L.Ya && (g.h.remove(a.hd[d].L.Ya.Rf), g.h.remove(a.hd[d].L.Ya.Yb), a.hd[d].L.Ya = null), a.hd[d].hn && a.hd[d].hn.stop(), a.hd[d].Wb.ei = !1, a.hd[d].Wb.fl(), a.hd[d].Wb.w = null, a.hd[d].Wb = null, a.hd[d].L.gna(),
                    a.hd[d].L = null, a.hd[d].fl(), a.hd[d].He = null, a.hd[d].hi(), a.hd[d].map = null), c.push(a.hd[d]));
                for (d = 0; d < c.length; d += 1) a.hd = g.a.ao(a.hd, g.a.indexOf(a.hd, c[d]));
                var e = [],
                    f = [];
                g.a.vva(function(b) {
                    if (!b.ei && b.Jg) {
                        var c = b.w || a.mla(b);
                        c && (a.hd.push(c), c instanceof g.w.Oe || c instanceof g.w.un ? c.Ky(a) : c instanceof g.w.rb ? e.push(c.L) : f.push(c.L), b.ei = !0)
                    }
                }, b);
                e.length && a.td.qx(e);
                f.length && (a.os || (a.os = new g.o.$c(new A.o.$c, a), a.os.set("zIndex", 110), a.ra.push(a.os)), a.os.qx(f));
                a.set("display", 0)
            }
        },
        overlaysChanged: function() {
            this.hd =
                this.hd || [];
            this.get("overlays") && 0 === this.get("overlays").length ? this.l0() : this.q0 || (g.a.Qc(this.l0, this), this.q0 = !0)
        },
        contextmenusChanged: function() {
            var a = this.get("contextmenu");
            if (a) {
                var b = this;
                g.qb.load("overlay", function() {
                    b.Fx = new g.w.un(a, b);
                    b.set("display", 0)
                })
            }
        },
        infosChanged: function() {
            var a = this.get("infos");
            if (a) {
                this.Xl = this.Xl || {};
                var b, c = this;
                g.qb.load("overlay", function() { for (var d in a) a.hasOwnProperty(d) && (b = a[d], c.Xl[d] = c.Xl[d] || new g.w.Oe(b, c)) })
            }
        },
        mla: function(a) {
            var b = null;
            if (a instanceof A.w.rb) b = new g.w.rb(a, this);
            else if (a instanceof A.w.un) b = new g.w.un(a, this);
            else if (a instanceof A.w.Oe) b = new g.w.Oe(a, this);
            else {
                var c = ["overlay"];
                "d" === this.get("overlayRender") ? (c.push("dvector"), g.l.so ? c.push("svg") : c.push("vml")) : c.push("cvector");
                if (!this.Rxa && !g.qb.TC(c)) {
                    var d = this;
                    g.qb.Kg(c, function() {
                        this.Rxa = !0;
                        d.overlaysChanged()
                    });
                    return
                }
                a instanceof A.w.Ec ? b = new g.w.Ec(a, this) : a instanceof A.w.Iz ? b = new g.w.Iz(a, this) : a instanceof A.w.Vb ? b = new g.w.Vb(a, this) : a instanceof A.w.Ug ? b = new g.w.Ug(a,
                    this) : a instanceof A.w.Vs ? b = new g.w.Ec(a, this) : a instanceof A.w.at && (b = new g.w.Ec(a, this))
            }
            return b
        },
        y2: function() { var a = this.pe;!this.eu || this.th && this.th.ap || (a = "function" === typeof this.eu ? this.eu(this.Ll.R.zoom) : this.eu); return a },
        HAa: function() {
            function a() {}
            var b = new g.o.$c,
                c = [],
                d = new g.T(116.405467, 39.907761);
            new g.style.vg.Th;
            for (var e = 0; 100 > e; e += 1)
                for (var f = 0; 100 > f; f += 1) {
                    var h = new g.T(d.Q + 0.02 * f, d.P + 0.02 * e),
                        h = new g.Rh({ name: "point" + (100 * e + f), map: this, da: new g.Ca.ug(this.Ab(h)) });
                    c[100 * e + f] =
                        h;
                    h.g("hover", a, h)
                }
            b.qx(c);
            this.ra.push(b)
        },
        cc: function() {},
        FAa: function(a) {
            var b = new g.o.$c,
                c = [],
                c = (new g.Q9({ map: this })).NS(a);
            b.qx(c);
            this.ra.push(b);
            this.set("display", 0)
        },
        Lf: function(a) {
            var b = this;
            a = a.Lf(this);
            if (!a) return null;
            if (a.length && "string" == typeof a[0]) g.qb.Kg(a, function() { b.layersChanged() });
            else return a;
            return null
        },
        ACa: function() { return this.Sa },
        NEa: function() { this.set("display", 0) },
        displayChanged: function(a) { this.c0 || this.NJ(a) },
        NJ: function(a) {
            if (a)
                if (g.a.fi(this.JD), g.l.Bl) {
                    var b =
                        this;
                    setTimeout(function() { b.fc() }, 0)
                } else this.fc();
            else this.Sv || (this.JD = g.a.Qc(this.fc), this.Sv = !0)
        },
        fc: function() {
            this.JD = null;
            if (!this.BP) {
                this.q("render");
                this.Sv = !1;
                var a = {};
                if (this.ra && (a.size = this.D.get("size"), a.size.width && a.size.height)) {
                    for (var b = this.D.view.type, c = [], d = 0, e = this.ra.length; d < e; d += 1) this.ra[d].Ai && this.ra[d].Ai !== b ? this.ra[d].La = !0 : (c.push(this.ra[d]), this.ra[d].$k && c.push(this.ra[d].$k));
                    c.sort(function(a, b) {
                        var c = a.get("zIndex"),
                            d = b.get("zIndex");
                        return c > d ? 1 : c === d ?
                            a.dF > b.dF ? 1 : -1 : -1
                    });
                    a.ra = c;
                    c = g.l.ia ? Math.min(window.devicePixelRatio || 1, 2) : 1;
                    a.Wka = 15E5 < a.size.width * a.size.height * c * c;
                    a.vI = !!this.D.get("rasterLayer");
                    a.Z = g.l.Z;
                    a.lang = this.get("lang");
                    a.R = this.D.pI();
                    a.Ai = b;
                    this.D.C = !0;
                    a.S = this.D.getResolution([0, 0]);
                    a.$r = this.D.get("mapStyle");
                    a.Sk = this.Sk;
                    this.D.C = !1;
                    a.Pd = this.Xg;
                    a.DBa = this.Cn;
                    a.Ye = this.Dk;
                    a.Lg = this.yg;
                    a.aU = this.yg && g.l.Z;
                    a.w8 = g.l.Z && this.Dk;
                    a.mK = g.l.Z && this.Xg;
                    this.mK = a.mK;
                    b = this.get("targetLevel") || a.R.zoom;
                    a.Ts = a.R.zoom > b;
                    a.Ef = a.R.zoom > b ? "zoomOut" :
                        a.R.zoom < b ? "zoomIn" : "stable";
                    a.VDa = !0;
                    a.M0 = this.M0;
                    for (var b = !1, f, c = !1, d = 0; d < this.ra.length; d += 1) this.ra[d].pi && this.ra[d].V.get("visible") && a.R.zoom <= this.ra[d].V.get("zooms")[1] && (a.cT = !0), this.ra[d].te().Mc && (b = !0);
                    for (d = 0; d < this.ra.length; d += 1) this.ra[d].V.KO && a.cT && (!this.Dk && this.ra[d].V.get("visible") && (f = this.ra[d].V.KO(), f.gDa = 1, f.zoom = a.R.zoom), c = !0);
                    this.wb = [];
                    c && f && this.wb !== f && (this.wb = f);
                    a.wb = this.wb;
                    a.Mc = b;
                    a.scale = Math.pow(2, a.R.zoom - a.R.ze);
                    this.Ll = a;
                    this.vd = this.D.get("mask");
                    a.vd =
                        this.vd;
                    if (f = this.iI()) f.fc(a), this.Sk = this.jQ = !1
                }
            }
        },
        iI: function() {
            if (!this.K || this.K.type !== this.D.view.type || this.K.Qra)
                if (this.K = null, "3D" == this.D.view.type) {
                    var a = this;
                    g.qb.load("Map3D", function() { a.K || (a.K = new g.Ba.NE(a), a.set("display")) })
                } else this.K = new g.N.canvas.Jb(this);
            return this.K
        },
        Hoa: function() {
            var a = [],
                b = this.get("controls").Wc,
                c;
            for (c in b) b[c].ey && b[c].ey() && a.push(b[c].ey());
            return a
        },
        destroyChanged: function() {
            delete g.oe.ny[this.D._amap_id];
            this.BP = 1;
            this.YS(!0);
            this.U = {};
            this.Ac &&
                (this.Ac.V.G("complete", this.Qq, this), this.Ac.Pg(), this.ra = g.a.ao(this.ra, g.a.indexOf(this.ra, this.Ac)));
            this.th && this.th.af && this.th.af.V && this.th.af.V.setMap();
            this.kja && clearTimeout(this.kja);
            this.Pia();
            this.Pfa();
            this.xN && this.xN();
            this.Uja();
            this.fl();
            this.D = this.D.map = null;
            this.J = this.J.BL = null;
            this.hi();
            this.ve && (this.ve.stop(), this.ve = null);
            this.Df && (this.Df.stop(), this.Df = null);
            this.yd && (this.yd.stop(), this.yd = null);
            this.K && this.K.Nf && this.K.Nf();
            this.K = null
        },
        Uja: function() {
            var a = this.J;
            this.Hba();
            g.F.Vla(a);
            g.h.FD(a);
            this.rl = null;
            g.h.ab(a, "amap-container");
            this.Sa = null
        },
        jogEnableChanged: function() { this.get("jogEnable") ? this.Ku = !0 : this.Ku = !1 },
        drawChanged: function() {
            var a = this,
                b, c, d = this.get("draw");
            if (d) {
                this.Kp || (this.Kp = []);
                b = 0;
                for (c = this.Kp.length; b < c; b += 1) this.Kp[b].zua();
                g.qb.load("interaction", function() {
                    var b = new g.Oya({ type: d, o: a.os }, a);
                    a.Kp.push(b);
                    a.loaded = !0
                })
            } else if (this.Kp)
                for (b = 0, c = this.Kp.length; b < c; b += 1) this.Kp[b].zua(), this.Kp[b].dBa(), this.G("click", this.Kp[b].PCa,
                    this)
        },
        Ae: function(a, b, c) { return this.D.view.Ae(a, b, c) },
        kg: function(a, b, c) { return this.D.view.kg(a, b, c) },
        i3: function(a, b) {
            var c = this.get("size"),
                d = document.createElement("canvas");
            a = a || c.width;
            b = b || c.height;
            d.width = a;
            d.height = b;
            for (var e = -(c.width - a) / 2, c = -(c.height - b) / 2, f = d.getContext("2d"), h = this.Sa.o.childNodes, k = [], l = 0; l < h.length; l += 1) k.push(h[l]);
            k.sort(function(a, b) { return a.style.zIndex - b.style.zIndex });
            for (l = 0; l < k.length; l += 1) {
                var m = k[l];
                if (g.h.$m(m, "amap-layer") || g.h.$m(m, "amap-e") || g.h.$m(m,
                        "amap-labels"))
                    if ("CANVAS" === m.tagName) {
                        var h = c,
                            n = e,
                            p = parseFloat(m.style.width) || m.width,
                            q = parseFloat(m.style.height) || m.height,
                            r = 1;
                        m.style.transform && (r = parseFloat(m.style.transform.split("(")[1]));
                        f.drawImage(m, n, h, p * r, q * r)
                    } else if ("DIV" === m.tagName)
                    for (var r = m.childNodes, s = parseFloat(m.style.top) || 0 + c, m = parseFloat(m.style.left) || 0 + e, u = 0; u < r.length; u += 1) {
                        var v = r[u];
                        if ("CANVAS" === v.tagName || "IMG" === v.tagName) h = parseFloat(v.style.top) || 0, n = parseFloat(v.style.left) || 0, p = parseFloat(v.style.width) ||
                            v.width, q = parseFloat(v.style.height) || v.height, f.drawImage(v, n + m, h + s, p, q)
                    }
            }
            return d.toDataURL()
        }
    });
    g.Jb.zb({
        Dea: function() {
            this.SA = !1;
            g.l.Bf && ("3D" === this.D.view.type ? this.Zaa() : this.Xaa());
            g.l.Z || this.Uaa()
        },
        Pia: function() {
            g.l.Bf && ("3D" === this.D.view.type ? this.Vfa() : this.Ufa());
            g.l.Z || this.Qfa()
        },
        rotateEnableChanged: function() {
            this.lva = this.get("rotateEnable");
            g.l.Bf && this.P0 && "3D" !== this.D.view.type && (this.lva ? this.P0() : this.Csa())
        },
        zoomEnableChanged: function() { this.get("zoomEnable") ? (g.l.Bf && this.MO && "3D" !== this.D.view.type && this.MO(), g.l.Z || this.Waa()) : (g.l.Bf && this.dS && this.dS(), g.l.Z || this.Tfa()) },
        mousewheelChanged: function() {},
        SR: function(a) { a && (this.SA = a.It) },
        Kv: function() { this.SA = !1 },
        vi: function(a, b, c, d) {
            var e, f = {};
            a || (a = window.event);
            var h = g.F.Ql(a, this.Sa.Yc);
            g.l.Bf && ("touchend" !== a.type ? this.U.kfa = h : h = this.U.kfa);
            f.sb = h;
            f.Na = this.kg(h);
            f.Na && (f.Na = f.Na.toFixed(3));
            f.Tf = this.Qd(f.Na);
            c || (c = this.SA ? this.SA ? [this.SA] : null : this.qda(f.Na, d)) && 0 < c.length && c[0].Yq && (e = c[0].Yq, f.It = c[0]);
            e || "info" === a.rf || (e = this);
            f.bd = e;
            f.Nza = a.altKey;
            f.ctrlKey = a.ctrlKey;
            f.button = void 0 === a.button ? 0 : a.button;
            b || g.F.preventDefault(a);
            return f
        },
        VM: function(a) { return a && a !== this && a !== document },
        PN: function() {
            var a = this.U;
            a.Sf && (a.Mj.sb.x === a.Sf.x && a.Mj.sb.y === a.Sf.y ? a.yg = !1 : (a.yg = !0, a.Yo || (a.Bp.q("dragstart", a.Ap), a.Yo = !0), a.Bp.q("dragging", a.Mj), a.Sf = a.Mj.sb))
        },
        bwa: function(a) { for (var b = [], c = 0; c < a.length; c += 1) a[c] && (b = b.concat(a[c])); return b },
        Oy: function(a, b, c) { return a && b && (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y) < (c || 10) },
        qda: function(a, b) {
            var c = this.iI();
            if (!c) return null;
            var d, e = this;
            this.ra.sort(function(a,
                b) { return a.get("zIndex") > b.get("zIndex") ? -1 : 1 });
            c.wu(a, this.ra, function(a) {
                d = a;
                d = e.bwa(d)
            }, function() { d = [] }, b);
            return d
        }
    });
    g.Jb.zb({
        Kea: function() {
            this.Cn = {};
            this.g("moveend", this.G5, this);
            g.l.Bl && (g.l.tK || g.l.eH) && this.g("zoomend", this.FU, this);
            this.g("movestart", this.H5, this);
            this.g("zoomstart", this.N5, this);
            this.g("zoomend", this.M5, this);
            this.GL();
            this.it = 0;
            this.FF = {};
            "undefined" === typeof window.requestAnimationFrame && (this.it = 2)
        },
        N5: function() {
            2 !== this.it && 12 === this.get("zoom") && (this.it = 1, g.a.xC.start(this.FF));
            this.Dk = !0
        },
        M5: function() {
            1 === this.it && 13 !== this.get("zoom") && (this.it = 0, g.a.xC.cancel(this.FF));
            this.Dk = !1;
            this.set("display")
        },
        G_: function(a, b) {
            this.Cn.left = 0 < a;
            this.Cn.right = 0 > a;
            this.Cn.nE = 0 < b;
            this.Cn.FP = 0 > b
        },
        Et: function() {
            this.Cn.left = !1;
            this.Cn.right = !1;
            this.Cn.nE = !1;
            this.Cn.FP = !1
        },
        Pfa: function() {
            this.G("moveend", this.G5, this);
            g.l.Bl && (g.l.tK || g.l.eH) && this.G("zoomend", this.FU, this);
            this.G("movestart", this.H5, this);
            this.G("zoomstart", this.N5, this);
            this.G("zoomend", this.M5, this);
            this.Rfa()
        },
        G5: function(a) {
            this.yg = !1;
            this.Et();
            this.V6();
            !a.s4 && this.D.get("limitBounds", null, !0) ? (a = this.Dla()) && !a.cb(this.get("center")) ?
                this.YJ(this.get("zoom"), a, !1, !0) : this.ma("moveend") : this.ma("moveend");
            this.set("display")
        },
        H5: function() {
            this.yg = !0;
            this.Et()
        },
        dragEnableChanged: function() {
            (this.mC = this.get("dragEnable")) ? this.FL(): this.wN()
        },
        ma: function(a, b) {
            if (this.D.fe(a)) {
                var c;
                b && (c = b.w5 ? { type: a, newsize: b.w5, oldsize: b.Dsa } : { type: a, pixel: b.sb, target: this.D, lnglat: b.Tf });
                this.D.q(a, c)
            }
        },
        GL: function() {
            this.g("click", this.lZ);
            this.g("dblclick", this.pZ);
            g.l.Bf && this.lW();
            g.l.Z || this.Vaa()
        },
        Rfa: function() {
            this.G("click", this.lZ);
            this.G("dblclick", this.pZ);
            g.l.Bf && this.aZ();
            g.l.Z || this.Sfa()
        },
        lG: function(a, b) {
            var c = this.get("targetLevel") || this.get("zoom"),
                c = 0 < b ? Math.floor(c) + 1 : Math.ceil(c) - 1,
                c = Math.min(Math.max(c, this.get("zooms")[0]), this.get("zooms")[1]);
            c === this.get("zoom") || this.Df && this.Df.ov && c === this.Df.end || this.Gz(c, !1, a)
        },
        lZ: function(a) { this.ma("click", a) },
        pZ: function(a) {
            this.get("doubleClickZoom") && this.get("zoomEnable") && this.lG(a.Na, 1);
            this.ma("dblclick", a)
        },
        rAa: function(a) {
            this.lG(a.FFa, a.d8);
            this.ma("touchend",
                a)
        },
        FL: function() { this.mC && ("3D" === this.D.view.type ? (this.g("dragstart", this.vZ), this.g("dragging", this.rZ), this.g("dragend", this.tZ)) : (this.g("dragstart", this.uZ), this.g("dragging", this.qZ), this.g("dragend", this.sZ))) },
        wN: function() { this.mC || ("3D" === this.D.view.type ? (this.G("dragstart", this.vZ), this.G("dragging", this.rZ), this.G("dragend", this.tZ)) : (this.G("dragstart", this.uZ), this.G("dragging", this.qZ), this.G("dragend", this.sZ))) },
        uZ: function(a) {
            this.SR(a);
            this.Et();
            this.Xg = !0;
            this.U.Sx = a.sb.x;
            this.U.nC =
                a.sb.y;
            this.ve && (this.ve.stop(), this.Er(!0));
            this.ma("dragstart");
            this.ma("movestart");
            this.q("movestart", a);
            this.hwa()
        },
        qZ: function() {
            var a = this.U,
                b = a.Mj.sb.x - a.Sx,
                c = a.Mj.sb.y - a.nC;
            if (c || b) {
                this.U.yg = !0;
                this.G_(b, c);
                a.Sx = a.Mj.sb.x;
                a.nC = a.Mj.sb.y;
                var a = b,
                    d = c,
                    e = this.rotation;
                e && (e *= Math.PI / 180, a = b * Math.cos(e) + Math.sin(e) * c, d = -Math.sin(e) * b + Math.cos(e) * c);
                a = this.get("centerCoords").$a((new g.H(a, d)).Gd(this.S));
                (d = this.n1(a)) && (c = Math.round(this.Ae(d).$a(this.Ae(a)).y));
                this.xo(this.Sa.lr, b, c);
                a.x =
                    (a.x + g.a.Da) % g.a.Da;
                this.set("centerCoords", a, !0);
                this.set("center", this.Qd(a), !0);
                this.Ku && (this.Yg ? (a = new Date, this.pt = 100 < a - this.Yg ? new g.H(0, 0) : new g.H(b, c), this.Yg = a) : this.Yg = new Date);
                this.ma("dragging");
                this.ma("mapmove")
            } else this.U.yg = !1, this.pt = null, this.Et()
        },
        xo: function(a, b, c) {
            if (a && !(1 > Math.abs(b) && 1 > Math.abs(c))) {
                var d = parseFloat(a.style.top) || 0,
                    e = parseFloat(a.style.left) || 0,
                    f = "";
                this.rotation && (f = g.h.Fs[g.h.dg] + ":rotate(" + this.rotation + "deg);overflow:visible;");
                a.style.cssText = "position:absolute;top:" +
                    (d + c) + "px;left:" + (e + b) + "px;" + f
            }
        },
        n1: function(a) {
            var b = this.D.view.OV(),
                c = this.HT.height * this.S / 2;
            return a.y < b.dc + c ? (a.y = b.dc + c, a) : a.y > b.vc - c ? (a.y = b.vc - c, a) : null
        },
        sZ: function() {
            this.Kv();
            100 < new Date - this.Yg && (this.pt = null);
            this.U.Sf = null;
            this.Xg = !1;
            this.Et();
            this.ma("dragend");
            if (this.Ku && this.pt)
                if (this.U.yg) {
                    var a = this.pt,
                        b = new g.H(0, 0);
                    this.ve = new g.wj(a, b, function(a, b, e) { return 600 <= e ? b : a.Gd(1 - Math.pow(e / 600, 2)).floor() }, 1);
                    this.ve.Wp = function(a) {
                        if (2 > Math.abs(a.x) && 2 > Math.abs(a.y)) this.ve.stop(),
                            this.q("moveend"), this.Er(), this.pt = this.Yg = null;
                        else {
                            var b = a.x,
                                e = a.y,
                                f = this.rotation;
                            f && (f *= Math.PI / 180, b = a.x * Math.cos(f) + Math.sin(f) * a.y, e = -Math.sin(f) * a.x + Math.cos(f) * a.y);
                            b = this.get("centerCoords").$a((new g.H(b, e)).Gd(this.S));
                            e = this.n1(b);
                            f = a.y;
                            e && (f = Math.round(this.Ae(e).$a(this.Ae(b)).y));
                            this.xo(this.Sa.lr, a.x, f);
                            b.x = (b.x + g.a.Da) % g.a.Da;
                            this.set("centerCoords", b, !0);
                            this.set("center", this.Qd(b), !0);
                            this.ma("mapmove")
                        }
                    };
                    this.ve.pn(this)
                } else this.q("moveend"), this.Er(!0), this.pt = this.Yg = null;
            else this.q("moveend"), this.Er(), this.pt = this.Yg = null
        },
        hwa: function() {
            if (!this.U.refresh) {
                var a = this,
                    b = null;
                this.U.refresh = setInterval(function() { b !== a.U.Sf && (a.set("display", 0), b = a.U.Sf) }, g.l.Z ? 400 : 100)
            }
        },
        FU: function() {
            if (g.l.Bl && (g.l.tK || g.l.eH)) {
                for (var a = this.Sa.o.childNodes, b = 0; b < a.length; b += 1) {
                    var c = a[b];
                    c instanceof HTMLCanvasElement && (c.width = 0);
                    "amap-e" === c.className && (c.style.height = "0")
                }
                for (b = 0; b < this.ra.length; b += 1) c = this.ra[b], "undefined" !== typeof AMap.IndoorMap && c instanceof AMap.IndoorMap &&
                    (c.Kt && (c.Kt.width = 0), c.kx && (c.kx.width = 0))
            }
        },
        Er: function(a) {
            this.U.refresh && (clearInterval(this.U.refresh), this.U.refresh = null);
            a || (this.FU(), this.set("display", 0))
        },
        V6: function(a) { this.set("refresh", a) }
    });
    g.Jb.zb({
        setZoomSlow: function(a) { this.YJ(a, null, !this.get("animateEnable")) },
        setPanTo: function(a) { this.YJ(null, a, !this.get("animateEnable")) },
        zoomAndCenterChanged: function(a) {
            var b = a[0];
            b < this.get("zooms")[0] && (b = this.get("zooms")[0]);
            b > this.get("zooms")[1] && (b = this.get("zooms")[1]);
            this.YJ(b, a[1], a[2] || !this.get("animateEnable"))
        },
        zoomChanged: function() {
            this.S = Math.pow(2, 20 - this.get("zoom"));
            this.q("closeOverlays");
            this.set("display")
        },
        rotationChanged: function(a) {
            this.rotation = this.get("rotation");
            this.D.q("rotate", { rotation: this.rotation || 0 });
            !0 !== a && this.set("display", 0)
        },
        pitchChanged: function() {
            this.pitch = this.get("pitch");
            this.D.q("pitch", { pitch: this.pitch || 0 });
            this.set("display", 0)
        },
        centerCoordsChanged: function() {
            this.q("closeOverlays");
            this.Sza ? this.NJ(!0) : this.NJ(!1)
        }
    });
    g.FV = g.aa.extend({
        ja: [g.sa, g.Pe],
        r: function(a, b) {
            this.type = "2D";
            this.We(b, !0);
            a && this.Yka(a)
        },
        Yka: function(a) {
            this.map = a;
            this.Qe(["size", "refresh", "maxPitch"], a);
            this.centerChanged();
            a.Qe(["zoom", "center", "centerCoords", "rotation", "pitch"], this)
        },
        OV: function() { this.vL || this.mma(); return this.vL },
        mma: function() {
            var a;
            if (this.get("center") instanceof g.T) {
                a = new g.me(-180, -85, 180, 85);
                var b = this.map.Ab(a.Oj());
                a = this.map.Ab(a.lo());
                this.vL = { Jc: b.x, dc: b.y, Hc: a.x, vc: a.y }
            } else a = this.map.get("limitBounds",
                null, !0), this.vL = { Jc: a[0], dc: a[1], Hc: a[2], vc: a[3] }
        },
        pI: function() {
            var a = this.map,
                b = this.get("zoom");
            return { zoom: b, eh: this.get("center"), Ha: this.Ol(), nb: this.get("centerCoords"), rotation: parseInt(this.get("rotation")), xf: a.get("crs"), S: Math.pow(2, 20 - b), ze: Math.round(b), rg: Math.pow(2, 20 - Math.round(this.get("zoom"))) }
        },
        centerChanged: function() { this.set("centerCoords", this.map.Ab(this.get("center")).toFixed(3), !0) },
        centerCoordsChanged: function() {
            var a = this.map;
            a.C = !0;
            var b = this.OV(),
                c = this.get("centerCoords"),
                d = a.getSize();
            a.C = !1;
            var e = this.get("zoom", null, !0),
                a = this.get("center", null, !0),
                d = d.height * Math.pow(2, 20 - e) / 2;
            a instanceof g.T ? c.x = (c.x + 268435456) % 268435456 : 0 > c.x ? c.x = 0 : c.x > b.Hc && (c.x = b.Hc);
            c.y < b.dc + d ? c.y = b.dc + d : c.y > b.vc - d && (c.y = b.vc - d);
            this.set("center", this.map.Qd(c), !0)
        }
    });
    g.ZE = g.FV.extend({
        Ol: function() {
            var a = this.get("size"),
                b = this.get("centerCoords"),
                c = parseInt(this.get("rotation")) % 360,
                d = this.get("zoom", null, !0),
                e = Math.pow(2, 20 - d),
                c = Math.PI * c / 180,
                a = new g.H((Math.abs(a.width * Math.cos(c)) + Math.abs(a.height * Math.sin(c))) / 2, (Math.abs(a.width * Math.sin(c)) + Math.abs(a.height * Math.cos(c))) / 2),
                e = new g.Ff(b.$a(a.Gd(e)), b.add(a.Gd(e))),
                c = this.map.get("targetLevel");
            if (c > d - 1) {
                var f = Math.pow(2, 20 - c);
                e.m9 = new g.Ff(b.$a(a.Gd(f)), b.add(a.Gd(f)))
            }
            e.b8 = c || d;
            e.tc = a;
            return e
        },
        yoa: function(a) {
            var b =
                this.get("size"),
                c = this.get("centerCoords"),
                d = parseInt(this.get("rotation")) % 360,
                d = Math.PI * d / 180,
                b = new g.H((Math.abs(b.width * Math.cos(d)) + Math.abs(b.height * Math.sin(d))) / 2, (Math.abs(b.width * Math.sin(d)) + Math.abs(b.height * Math.cos(d))) / 2);
            a = Math.pow(2, 20 - a);
            return new g.Ff(c.$a(b.Gd(a)), c.add(b.Gd(a)))
        },
        pd: function() {
            var a = this.Ol(),
                b = a.Fd.x,
                c = a.Xb.y,
                a = new g.H(a.Xb.x, a.Fd.y),
                b = new g.H(b, c);
            return new g.me(this.map.Qd(a), this.map.Qd(b))
        },
        zoomChanged: function() {},
        Ae: function(a, b) {
            this.get("size");
            var c =
                a.jb(),
                d = this.get("centerCoords"),
                e = c.$a(d);
            e.x < -g.a.Da / 2 ? e.x += g.a.Da : e.x > g.a.Da / 2 && (e.x -= g.a.Da);
            var c = this.get("size").$D().dd(2),
                f = this.get("rotation") * Math.PI / 180,
                d = e.x * Math.cos(f) - Math.sin(f) * e.y,
                e = Math.sin(f) * e.x + Math.cos(f) * e.y;
            return c.add((new g.H(d, e)).Gd(Math.pow(2, (b || this.get("zoom")) - 20)))
        },
        kg: function(a, b) {
            var c = this.get("size").$D().dd(2),
                d = a.$a(c),
                e = this.get("rotation") * Math.PI / 180,
                c = d.x * Math.cos(e) + Math.sin(e) * d.y,
                d = -Math.sin(e) * d.x + Math.cos(e) * d.y,
                c = this.get("centerCoords").add((new g.H(c,
                    d)).Gd(Math.pow(2, 20 - (b || this.get("zoom")))));
            c.x = (c.x + 268435456) % 268435456;
            return c
        }
    });
    g.pL = g.FV.extend({
        r: function(a, b) {
            this.Wf = new g.Dc;
            this.Zc = new g.Dc([1, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1]);
            arguments.callee.ka.apply(this, arguments);
            this.scale = 1;
            this.type = "3D";
            this.zz = null;
            this.r6 = "";
            this.R = ["", 0, 0, "", 0];
            this.zz = {}
        },
        refreshChanged: function() { this.vq() },
        zoomChanged: function(a) {
            this.vq();
            this.R[4] = a
        },
        centerChanged: function(a) {
            arguments.callee.ka.apply(this, arguments);
            this.vq()
        },
        centerCoordsChanged: function(a) {
            arguments.callee.ka.apply(this, arguments);
            this.vq();
            this.R[0] = a.toString()
        },
        rotationChanged: function(a) {
            this.vq();
            this.R[2] = a
        },
        pitchChanged: function(a) {
            this.He.pitch = Math.min(this.get("maxPitch"), Math.max(a, 0));
            this.vq();
            this.R[1] = a
        },
        vq: function() {
            if (!this.Ixa() && (this.tU(), this.hna(), this.map)) {
                var a = this,
                    b = function() {
                        a.map.camera = a.C2();
                        a.map.q("camerachange", { map: a.map, camera: a.map.camera })
                    };
                a.map.La ? b() : this.map.g("complete", b, this)
            }
        },
        C2: function() { return { height: this.Pm, fov: this.ooa, aspect: this.JB, near: this.Hy, far: this.QH, position: this.tla, rotation: this.He.rotation, pitch: this.He.pitch } },
        hna: function() { this.lfa = g.a.vf() },
        ro: function() { var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : 300; return g.a.vf() - this.lfa > a },
        tU: function() {
            var a = this.get("centerCoords"),
                b = this.get("pitch"),
                c = this.get("rotation"),
                d = (new g.Dc).x7(-a.x + g.a.Zb.x, -a.y + g.a.Zb.y, 0);
            this.tla = { x: a.x - g.a.Zb.x, y: a.y - g.a.Zb.y };
            a = (new g.Dc).cz(180 - b, 1, 0, 0);
            this.Rta = (new g.Dc).set(a);
            c = (new g.Dc).cz(c, 0, 0, 1);
            this.vs = (new g.Dc).set(c);
            this.noa = d.Hg();
            this.Zc = (new g.Dc).x7(0, 0, -this.Pm).multiply(a.multiply(c.multiply(d))).toFixed(8);
            this.Zc.Te = this.Zc.Hg()
        },
        Ixa: function(a) {
            a = a || this.get("zoom");
            var b = this.get("size"),
                c = b.width,
                b = b.height;
            if (!c || !b) return !0;
            this.JB = c /= b;
            b = b / 2 * Math.pow(2, 20 - a);
            a = g.a.lc((56 - a) * Math.PI / 180, 2);
            var d = g.a.lc(b / Math.tan(a / 2), 0);
            2400 > d && (d = 2400, a = 2 * Math.atan(b / d));
            this.ooa = a;
            this.Pm = d;
            this.Hy = this.Pm / 10;
            this.QH = 50 * this.Pm;
            this.Sma = (this.Pm - this.Hy) / (this.QH - this.Hy);
            this.Wf.u7(a, c, this.Hy, this.QH);
            this.Wf.Te = this.Wf.Hg();
            a = this.Wf;
            var c = new g.YU,
                b = c.uD,
                e = this.Wf.elements,
                d = e[0],
                f = e[1],
                h = e[2],
                k = e[3],
                l =
                e[4],
                m = e[5],
                n = e[6],
                p = e[7],
                q = e[8],
                r = e[9],
                s = e[10],
                u = e[11],
                v = e[12],
                x = e[13],
                t = e[14],
                e = e[15];
            uc(b[0], k - d, p - l, u - q, e - v).normalize();
            uc(b[1], k + d, p + l, u + q, e + v).normalize();
            uc(b[2], k + f, p + m, u + r, e + x).normalize();
            uc(b[3], k - f, p - m, u - r, e - x).normalize();
            uc(b[4], k - h, p - n, u - s, e - t).normalize();
            uc(b[5], k + h, p + n, u + s, e + t).normalize();
            a.nQ = c
        },
        pI: function() {
            var a = this.map;
            a.map.uv && (this.vq(), this.R[3] = a.get("size").toString());
            var b = this.R.toString();
            if (b !== this.r6) {
                var c = this.get("zoom"),
                    d = this.zz;
                d.zoom = c;
                d.JB = this.JB;
                d.top =
                    this.top;
                d.Ha = this.Ol();
                d.nb = this.get("centerCoords");
                d.rotation = a.get("rotateEnable") && parseInt(this.get("rotation")) || 0;
                d.pitch = this.get("pitch") || 0;
                d.wGa = this.get("yaw");
                d.xf = a.get("crs");
                d.S = Math.pow(2, 20 - c);
                d.ze = Math.round(c);
                d.P5 = Math.floor(c);
                d.rg = Math.pow(2, 20 - d.ze);
                d.eta = Math.pow(2, 20 - d.P5);
                d.Wf = this.Wf;
                d.Zc = this.Zc;
                this.r6 = d.key = b
            }
            this.zz.eh = this.get("center");
            this.zz.tq = g.a.vf();
            this.zz.ro = this.ro();
            return this.zz
        },
        Ol: function() {
            var a = this.get("size"),
                b = a.width,
                a = a.height;
            if (!b || !a) return null;
            var c, d;
            d = 0;
            var e = new g.H(0, d);
            c = this.kg(e, !0);
            if (55 < this.He.pitch || !c)
                for (; !c;) d += a / 40, e.y = d, c = this.kg(e, !0);
            this.top = d / a;
            e.x = b;
            d = this.kg(e, !0);
            var f = 0,
                h = this.He.zoom;
            50 <= this.He.pitch && 18 <= h && (f = 0);
            e.y = a + f;
            f = this.kg(e, !0);
            e.x = 0;
            h = this.kg(e, !0);
            c = [c.dl(), d.dl(), f.dl(), h.dl(), c.dl()];
            c = new g.D9(c);
            e.x = b / 2;
            e.y = a + 256;
            c.XO = this.kg(e, !0);
            return c
        },
        pd: function() {
            var a = this.Ol();
            if (a) {
                for (var b = [], c = 0; c < a.path.length; c += 1) {
                    var d = this.map.Qd(new g.H(a.path[c][0], a.path[c][1]));
                    b.push(d)
                }
                return new g.No(b)
            }
        },
        Ae: function(a, b, c) {
            a.z = c || 0;
            a = this.p5([a]);
            a = a[0];
            return new g.H(a.x, a.y)
        },
        G2: function(a) {
            var b = this.get("size");
            a = new g.kl([a.x / b.width * 2 - 1, 1 - a.y / b.height * 2, -1, 1]);
            a.multiply(this.Hy);
            return this.Wf.Te.mh(a)
        },
        kg: function(a, b, c) {
            var d;
            this.map ? (this.map.C = !0, d = this.map.getSize(!0), this.map.C = !1) : d = this.get("size");
            var e = a.x / d.width * 2 - 1;
            d = 1 - a.y / d.height * 2;
            a = new g.kl([e, d, -1, 1]);
            a.multiply(this.Hy);
            if (!this.Wf.Te) return null;
            a = this.Wf.Te.mh(a);
            e = new g.kl([e, d, 1, 1]);
            e.multiply(this.QH);
            d = this.Wf.Te.mh(e);
            var f = this.Zc.Te,
                e = f.mh(a).elements;
            a = f.mh(d).elements;
            c = (e[2] - (-c || 0)) / (e[2] - a[2]);
            if (0 > a[2] || 0 > c || b && c > 2.5 * this.Sma) return null;
            b = e[0] - c * (e[0] - a[0]);
            c = e[1] - c * (e[1] - a[1]);
            return isNaN(b) || isNaN(c) ? null : (new g.H(b, c)).add(g.a.Zb)
        },
        p5: function(a) {
            for (var b = this.get("centerCoords"), c = g.a.Zb.x, d = g.a.Zb.y, e = this.get("size"), f = g.a.Da, h = b.x + f / 2, b = b.x - f / 2, k = [], l = new g.kl([0, 0, 0, 1]), m = l.elements, n = new g.H(0, 0), p = g.Dc.multiply(this.Wf, this.Zc), q = 0, r = a.length; q < r; q++)
                if (a[q]) {
                    a[q].concat ? (n.x = a[q][0], n.y = a[q][1],
                        n.z = -a[q][2] || 0) : (n.x = a[q].x, n.y = a[q].y, n.z = -a[q].z || 0);
                    h < n.x ? n.x -= f : b > n.x && (n.x += f);
                    m[0] = n.x - c;
                    m[1] = n.y - d;
                    m[2] = n.z;
                    var s = p.mh(l);
                    s.multiply(1 / s.elements[3]);
                    k[q] = { x: (s.elements[0] + 1) / 2 * e.width, y: (-s.elements[1] + 1) / 2 * e.height, z: s.elements[2] }
                }
            return k
        },
        jya: function(a) {
            var b = this.get("size");
            a = this.Wf.mh(this.Zc.mh((new g.kl).copy(a)));
            a.multiply(1 / a.elements[3]);
            b = new g.H((a.elements[0] + 1) / 2 * b.width, (-a.elements[1] + 1) / 2 * b.height);
            b.z = a.elements[2];
            return b
        }
    });
    g.a.Zb = new g.H(215440491, 106744817);
    g.Jb.zb({
        i1: function(a, b, c) {
            var d = this;
            d.sE ? (clearTimeout(d.sE), d.sE = null) : (d.ma("zoomstart", { zoom: a }), d.q("zoomstart"));
            d.sE = setTimeout(function() {
                d.sE = null;
                d.ma("zoomend", { zoom: a });
                d.ma("zoomchange", { zoom: a });
                d.q("zoomend")
            }, 150);
            a = g.a.lc(a, 2);
            d.Gz(a, !0, b, c)
        },
        Gz: function(a, b, c, d) {
            var e = this.get("zoom");
            if (e !== a) {
                var f = this.get("zooms");
                "3D" !== this.D.view.type && (g.l.Z || g.l.ue) && (b = !0);
                a = a || e;
                a = Math.min(Math.max(a, f[0]), f[1]);
                var h = a !== e,
                    k = !!c;
                this.ve && (this.ve.stop(), this.ve = null);
                c = c || this.get("centerCoords");
                var l = this.Ae(c);
                c = function(c) {
                    b || (c = g.a.lc(c, 2));
                    var d = this.kg(l);
                    this.set("zoom", c);
                    var e = this.kg(l),
                        d = e && e ? e.$a(d) : new g.H(0, 0);
                    this.set("centerCoords", this.get("centerCoords").$a(d).toFixed(3));
                    d.x && d.y && this.ma("mapmove");
                    c === a && a << 0 === a && (this.set("targetLevel", null), h && !this.sE && (this.ma("zoomchange"), this.ma("zoomend")), this.q("zoomend"), k && this.q("moveend"), this.Df = null)
                };
                var m;
                this.yd && this.yd.ov && (this.yd.stop(), this.yd.bR && (d = !0), this.yd.EC && (m = !0), this.yd = null, this.set("targetLevel",
                    null));
                this.Df && this.Df.ov && (this.Df.stop(), d = !0, this.Df.EC && (m = !0), this.Df = null, this.set("targetLevel", null));
                h && !d && this.ma("zoomstart");
                k && !m && this.ma("movestart");
                this.q("zoomstart");
                b ? c.call(this, a) : (this.Df = new g.wj(e, a, null, 0.04), this.Df.bR = h, this.Df.EC = k, this.Df.transition = function(a, b, c) { return c >= g.A.ZG ? b : (b - a) * (1 - Math.pow(1 - c / g.A.ZG, 4)) + a }, this.Df.Wp = c, this.Df.pn(this, !0), this.set("targetLevel", a))
            }
        },
        YJ: function(a, b, c, d) {
            var e = null;
            a || (a = this.yd ? this.yd.swa : this.get("targetLevel") || this.get("zoom"));
            var e = b ? this.Ab(b).toFixed(3) : this.yd ? this.yd.a8 : this.get("centerCoords"),
                f = a !== this.get("zoom"),
                h = !e.cb(this.get("centerCoords")),
                k = b = !1;
            this.Df && this.Df.ov && (this.Df.stop(), b = !0, this.Df.EC && (k = !0), this.Df = null, this.set("targetLevel", null));
            this.yd && this.yd.ov && (this.yd.stop(), this.yd.bR && (b = !0), this.yd.EC && (k = !0), this.yd = null, this.set("targetLevel", null));
            this.ve && (this.ve.stop(), this.ve = null);
            if (f || h) {
                if (!this.D.view.Ol().contains(e) || f && "3D" !== this.D.view.type && (g.l.Z || g.l.ue)) c = !0;
                if (c) f && (b ||
                    (this.q("zoomstart"), this.ma("zoomstart")), this.set("zoom", a), this.ma("zoomchange"), this.ma("zoomend"), this.q("zoomend")), h && (k || d || (this.ma("movestart"), this.q("movestart")), this.set("centerCoords", e), this.ma("mapmove"), this.q("moveend", { s4: d })), this.set("targetLevel", null);
                else {
                    this.set("targetLevel", a);
                    var l = a - this.get("zoom"),
                        m = e.$a(this.get("centerCoords")).toFixed(3);
                    this.yd = new g.wj(1, 0, null, 0.001);
                    this.yd.bR = f;
                    this.yd.EC = h;
                    this.yd.a8 = e;
                    this.yd.swa = a;
                    this.yd.transition = function(a, b, c) {
                        return Math.pow(1 -
                            Math.min(g.A.ZG, c) / g.A.ZG, 2)
                    };
                    this.yd.Wp = function(b) {
                        0.02 > b ? (this.yd && (this.yd.stop(), this.yd = null), f && (this.set("zoom", a), this.ma("zoomchange"), this.ma("zoomend"), f = !1, this.q("zoomend")), h && (this.set("centerCoords", e), this.q("mapmove"), this.q("moveend", { s4: d })), this.set("targetLevel", null)) : (f && this.set("zoom", a - l * b), h && (b = e.$a(m.Gd(b)).toFixed(3), this.set("centerCoords", b), this.ma("mapmove")));
                        this.set("display", 1)
                    };
                    this.yd.pn(this);
                    f && !b && (this.q("zoomstart"), this.ma("zoomstart"));
                    !h || k || d || (this.q("movestart"),
                        this.ma("movestart"))
                }
            }
        }
    });
    g.o = {};
    g.o.ac = g.aa.extend({
        ja: [g.sa, g.Pe],
        r: function(a, b) {
            this.V = a;
            this.lb = [3, 18];
            this.dF = g.a.ub(this);
            a && this.Qe(["opacity", "visible", "zIndex", "zooms"], a);
            a.Ai = b.D.view.type;
            this.e = b;
            this.W("display", b)
        },
        Pg: function() {
            this.pi && this.iP();
            if (g.Ea && g.Ea.xq && g.Ea.xq.length) { var a = g.a.indexOf(g.Ea.xq, this); - 1 !== a && (g.Ea.xq = g.a.ao(g.Ea.xq, a)) }
            if (a = this.Kb) {
                if (a.length)
                    for (var b = 0; b < a.length; b += 1) a[b].parentNode && a[b].parentNode.removeChild(a[b]);
                else a.parentNode && a.parentNode.removeChild(a);
                this.Kb = null
            }
            this.V.Pg && this.V.Pg();
            this.V.ei = !1;
            this.V.o = null;
            this.fl();
            var c;
            this.N && (this.N.Lj(), this.N = null, c = "-" + this.bc);
            this.Zf && (this.Zf.Lj(), this.Zf = null, c = "-" + this.bc);
            if (c)
                for (var d in g.Ea.sj) g.a.sC(d, c) && delete g.Ea.sj[d]
        },
        ma: function(a, b) { this.V.q(a, b) },
        visibleChanged: function() { this.set("display", 0) },
        zIndexChanged: function() { this.set("display", 0) },
        yT: function(a) { g.h.hq(a, this.opacity) },
        opacityChanged: function() {
            var a = this.get("opacity");
            this.opacity = Math.min(Math.max(0, a), 1);
            if (a = this.Kb)
                if (a.length)
                    for (var b = 0; b < a.length; b +=
                        1) this.yT(a[b]);
                else this.yT(a);
            this.e && this.e.D && "3D" == this.e.D.view.type && this.set("display", 0)
        },
        io: function() { return this.e.vd && !this.V.get("rejectMapMask") },
        fI: function() {
            var a = this.get("bounds");
            if (a) {
                if (a instanceof g.me) {
                    var b = a.Oj(),
                        a = a.lo(),
                        c = this.e.Ab(new g.T(180, 0)).x,
                        d = this.e.Ab(b),
                        e = this.e.Ab(a),
                        f = this.e.get("center");
                    b.Q > a.Q && (0 < f.Q ? e.x += c : d.x -= c);
                    this.I = [d.x, d.y, e.x, e.y]
                } else a instanceof g.Ff ? this.I = [a.Xb.x, a.Xb.y, a.Fd.x, a.Fd.y] : a instanceof g.$E && "3D" === this.V.Ai && (b = a.path[1], d =
                    this.e.Ab(a.path[0]), e = this.e.Ab(b), this.I = [d.x, d.y, e.x, e.y, a.k7, a.height]);
                return this.I
            }
            return null
        }
    });
    var Nc = function() {
        function a(a) { this.cF[g.a.ub(a)] = a; return this }

        function b(a) { this.cF[g.a.ub(a)] = null; return this }
        return function() {
            function c() {
                var a = c.cF,
                    b, f = [],
                    h;
                for (h in a) a.hasOwnProperty(h) && f.push(a[h]);
                for (a = f.length - 1; 0 <= a; a -= 1) h = f[a].apply(this, arguments), void 0 !== h && (b = h);
                return b
            }
            c.cF = {};
            c.w0 = a;
            c.LEa = b;
            return c
        }
    }();
    g.cg = g.aa.extend({
        ja: [g.sa],
        r: function(a, b) {
            this.bp = a | 0;
            this.gF = !!b;
            this.count = 0;
            this.mJ = Nc();
            this.clear();
            this.RA = []
        },
        Pk: function() { return !this.count },
        eDa: function() { return this.count >= this.bp },
        tFa: function(a) { this.bp !== a && (this.bp = a | 0) && this.f0(this.bp) },
        Wc: function(a) { return !!this.e[a] },
        get: function(a, b) { var c = this.mX(a); return c ? c.value : b },
        set: function(a, b) {
            var c = this.mX(a);
            c ? c.value = b : (c = new g.cg.Gq(a, b), this.e[a] = c, this.JA(c), this.count += 1, this.count > this.bp && this.f0(this.bp))
        },
        Mv: function(a) { this.remove(a) },
        remove: function(a) { return this.e.hasOwnProperty(a) && this.jB(this.e[a]) ? !0 : !1 },
        forEach: function(a, b) { for (var c = this.Vc.next; c !== this.Vc; c = c.next) a.call(b, c.value, c.key, this) },
        tJ: function(a, b) { return this.e.hasOwnProperty(a) ? this.e[a].value : b },
        nEa: function() { return this.Vc.next.value },
        oEa: function() { return this.Vc.Ga.value },
        shift: function() { return this.a_(this.Vc.next) },
        r1: function() { this.RA.length = 0 },
        Y4: function(a) { this.RA.push(a) },
        push: function(a) {
            a = new g.cg.Gq("", a);
            0 === this.count ? (this.Vc.Ga = null,
                a.Ga = this.Vc, this.Vc.next = a) : (this.zB.next = a, a.Ga = this.zB);
            this.count += 1;
            this.zB = a
        },
        yxa: function(a) {
            a = new g.cg.Gq("", a);
            0 === this.count ? (this.Vc.Ga = null, a.Ga = this.Vc, this.zB = this.Vc.next = a) : (this.Vc.next.Ga = a, a.next = this.Vc.next, a.Ga = this.Vc, this.Vc.next = a);
            this.count += 1
        },
        usa: function() {
            if (this.count) {
                this.count -= 1;
                var a = this.Vc.next;
                a.next ? (a.next.Ga = this.Vc, this.Vc.next = a.next) : (this.Vc.next = null, this.zB = this.Vc.Ga = null);
                a.next = null;
                a.Ga = null;
                return a.value
            }
            return null
        },
        pop: function() { return this.a_(this.Vc.Ga) },
        mX: function(a) { if (this.e.hasOwnProperty(a)) return a = this.e[a], this.gF && (a.remove(), this.JA(a)), a },
        JA: function(a) { this.gF ? (a.next = this.Vc.next, a.Ga = this.Vc, this.Vc.next = a, a.next.Ga = a) : (a.Ga = this.Vc.Ga, a.next = this.Vc, this.Vc.Ga = a, a.Ga.next = a) },
        f0: function(a) {
            if (!(this.count <= a || this.count < 2 * this.RA.length)) {
                for (var b = this.gF ? this.Vc.Ga : this.Vc.next, c = {}, d = 0, e = this.RA.length; d < e; d++) c[this.RA[d]] = !0;
                for (a = Math.ceil(2 * a / 3); b && this.count > a && (d = this.gF ? b.Ga : b.next, b.key && !c[b.key] && this.jB(b) && this.mJ(b.value),
                        b = d, b !== this.Vc && b !== this.zB););
            }
        },
        jB: function(a) {
            if (this.MB && !1 == this.MB(a.value)) return !1;
            a.remove();
            delete this.e[a.key];
            this.count -= 1;
            return !0
        },
        a_: function(a) { this.Vc !== a && (this.MB && console.log("Warnning!!!"), this.jB(a)); return a.value },
        clear: function() {
            this.e = {};
            this.Vc = new g.cg.Gq("", null);
            this.Vc.Ga = this.Vc.next = this.Vc;
            this.count = 0
        }
    });
    g.cg.Gq = function(a, b) {
        this.key = a;
        this.value = b
    };
    g.cg.Gq.prototype.Ga = null;
    g.cg.Gq.prototype.next = null;
    g.cg.Gq.prototype.remove = function() {
        this.Ga.next = this.next;
        this.next.Ga = this.Ga;
        this.next = this.Ga = null
    };

    function Oc(a, b, c) {
        this.url = a;
        this.Gc = b;
        this.iQ = c;
        this.Qm = this.OJ = !1
    }

    function Pc(a, b, c) { var d = Qc; return function() { return d.call(this, a, b, c) } }

    function Qc(a, b, c) {
        a.KBa = +new Date;
        a.loaded = b;
        clearTimeout(a.Hwa);
        var d = a.Lra;
        d.mn.remove(a.url) && d.mfa();
        d = a.Tqa ? a.ga : a.wa;
        a.ga = null;
        (c || b || a.iQ) && a.Gc(b ? d : null, a);
        a.z4 ? (a.z4.hi(), a.z4 = null) : d && (d.onload = null, d.onerror = null, d.onabort = null, a.wa = null)
    }
    g.HE = g.aa.extend({
        Pza: "assets/image/blank.gif",
        r: function(a, b, c) {
            this.timeout = b || 15E3;
            this.aq = new g.cg(1024);
            this.mn = new g.cg(1024);
            this.B1 = a;
            this.TP = c
        },
        OL: function(a) { a && this.mn.count >= this.B1 && (a = this.mn.Vc.Ga.value, a.Qm && (this.mn.remove(a.url), this.VV(a))); for (; this.aq.count && !(this.mn.count >= this.B1);) this.vca(this.aq.shift()) },
        mfa: function() {
            if (!this.FW) {
                this.FW = !0;
                var a = this;
                setTimeout(function() {
                    a.FW = !1;
                    a.OL()
                }, 0)
            }
        },
        vca: function(a) {
            var b = document.createElement("img");
            a.poa && (b.crossOrigin =
                "anonymous");
            b.src = a.url;
            a.wa = b;
            a.Lra = this;
            a.startTime = +new Date;
            a.OJ = !0;
            b.complete ? Qc(a, !0) : (this.mn.set(a.url, a), b.onload = Pc(a, !0), b.onerror = Pc(a, !1, !0), b.onabort = Pc(a, !1), a.Hwa = setTimeout(Pc(a, !1, !0), this.timeout))
        },
        VV: function(a) { a.OJ && (Qc(a, !1), a.Qm = !0, a.EAa = !0) },
        BDa: function(a, b, c) { return this.By(a.url, b, c, !0, a.qa.z + "_" + a.qa.x + "_" + a.qa.y) },
        By: function(a, b, c, d, e) {
            var f = this.mn.get(a);
            if (f && f.Qm) f.Qm = !1, f.Gc = b, f.iQ = c;
            else {
                f = new Oc(a, b, c);
                f.Tqa = d;
                f.key = e;
                if (this.aq.get(g.a.ub(f))) return;
                this.aq.set(g.a.ub(f),
                    f);
                this.OL(!0)
            }
            return f
        },
        Bra: function(a, b, c) {
            var d = this.mn.get(a);
            if (d && d.Qm) d.Qm = !1, d.Gc = b, d.iQ = c;
            else {
                d = new Oc(a, b, c);
                d.poa = !0;
                if (this.aq.get(g.a.ub(d))) return;
                this.aq.set(g.a.ub(d), d);
                this.OL(!0)
            }
            return d
        },
        f1: function(a) { a.Qm || (a.Qm = !0, this.aq.remove(g.a.ub(a))) },
        clear: function(a) {
            this.aq.forEach(function(a) { a.Qm = !0 });
            this.aq.clear();
            if (a)
                for (; 0 < this.mn.length;) a = this.mn.pop(), this.VV(a);
            else this.mn.forEach(function(a) { a.Qm = !0 })
        }
    });

    function Rc(a, b, c) {
        this.z = a;
        this.x = b;
        this.y = c
    }
    Rc.prototype.jb = function() { return new Rc(this.z, this.x, this.y) };
    Rc.prototype.toString = function() { return this.z + "/" + this.x + "/" + this.y };
    g.ob = function(a) {
        var b = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : !1;
        this.qa = a;
        this.key = a.toString();
        this.we = b
    };
    g.Cq = Rc;
    g.o.ob = g.o.ac.extend({
        r: function(a, b, c, d, e) {
            arguments.callee.ka.apply(this, arguments);
            this.W("tileSize", a);
            this.W("tiles", a);
            this.Qe(["zooms", "type", "detectRetina", "errorUrl"], a);
            a.QF && (this.W("lang", b, !0), this.W("mapStyle", b, !0), this.W("style", b, !0), this.W("features", b, !0));
            var f = "overlayer" === a.get("type") || !1 === a.get("blend");
            this.qk = !f && !g.l.Z;
            if (g.l.ue || g.l.pGa) this.qk = !1;
            var h = b.get("size"),
                h = h.width * h.height / 65536;
            this.ia = g.l.Z && g.l.ia && this.get("detectRetina");
            g.l.Mc && g.l.Z && 9 < h && (this.qk = !1);
            this.Ki = !f && !a.$j;
            this.Li = !f && !a.$j;
            this.jK = c;
            this.W("reload", a);
            a.Pqa ? this.W("createTile", a) : this.W("tileFun", a);
            this.Ve = d;
            this.kR = e
        },
        langChanged: function() {
            this.set("reload");
            this.V.qs()
        },
        styleChanged: function() { this.e.od || (this.set("reload"), this.V.qs()) },
        featuresChanged: function() {
            this.set("reload");
            this.V.qs()
        },
        reloadChanged: function() { this.set("display", 0) },
        tileFunChanged: function() {
            var a = this.jK || this.get("tileFun");
            this.Xn = function(b, c, d) {
                var e = a(b.qa.x, b.qa.y, b.qa.z);
                if (!b.Ur || b.Ur.Qm) b.loaded = !1, b.Ur = ("3D" === this.e.D.view.type ? g.Vl.Bra : g.Vl.By).call(g.Vl, e, function(a) {
                    b.Ur = null;
                    a ? c(a) : d()
                }, !1)
            }
        },
        createTileChanged: function() {
            this.V.C = !0;
            var a = this.V.getCreateTile();
            this.V.C = !1;
            this.Xn = function(b, c, d) { a.call(this.j.V, b.qa.x, b.qa.y, b.qa.z, c, d, b) };
            this.set("reload")
        },
        te: function() {
            var a = this.V.get("zooms", null, !0);
            this.V.Oqa && (a = [Math.min(a[0], 18), Math.min(a[1], 18)]);
            return {
                xd: this.V.get("tileSize"),
                visible: this.V.get("visible"),
                I: this.fI(),
                lb: a,
                hH: this.qk,
                Ki: this.Ki,
                Li: this.Li,
                opacity: this.V.get("opacity"),
                Xn: this.V.get("createTile"),
                mo: this.jK || this.V.get("tileFun"),
                Mc: this.V.Tp ? !1 : this.V.get("detectRetina") && g.l.ia && g.l.Z,
                vd: this.io()
            }
        },
        Dl: function(a) { if (g.N.Wd.Fi) return new g.N.Wd.Fi(this, a) }
    });
    g.Vl = new g.HE(6, null);
    g.o.$c = g.o.ac.extend({
        r: function(a, b) {
            this.Za = Math.min(2, window.devicePixelRatio || 1);
            this.Mc = g.l.ia && !a.jj;
            this.map = b;
            this.rq = 0;
            this.Tl = !1;
            this.Xf = this.lf = 0;
            this.Ng = [];
            arguments.callee.ka.apply(this, arguments);
            this.Zu = [];
            this.Il = new g.o.K9;
            a && (this.W("style", a), this.W("cursor", a, !0), this.ewa = a.get("stable") || !1, this.W("dataSources", a), this.W("bubble", a));
            this.W("display", b);
            this.Raa()
        },
        te: function() {
            return {
                visible: this.get("visible"),
                lb: this.get("zooms"),
                opacity: this.get("opacity"),
                zIndex: this.get("zIndex"),
                ux: this.V.get("alwaysRender") || !1,
                vd: this.io()
            }
        },
        dataSourcesChanged: function() {
            var a = this.get("dataSources");
            a && a.length ? "string" === typeof a ? (new g.fb.vb(a)).g("complete", function(a) {
                this.X5(a.data);
                this.xr = a.data;
                this.Tl = !0;
                this.set("display");
                this.La = !0;
                this.V.q("complete")
            }, this) : a.length && (this.X5(a), this.xr = a, this.Tl = !0, this.set("display"), this.La = !0, this.V.q("complete")) : this.clear()
        },
        getDatas: function() { return this.xr },
        Dxa: function() {
            if (this.V.jj) {
                var a = this.fm;
                this.lf = a.lf;
                this.Xf = a.Xf
            }
        },
        ma: function(a, b) {
            var c = { type: a, data: "mouseout" === a ? this.jfa || null : b.It.eb, target: this.V };
            this.jfa = "mouseout" === a ? null : b.It.eb;
            this.V.q(a, c)
        },
        kc: function(a) { this.ma(a.type, a) },
        Raa: function() {
            this.g("click", this.kc);
            this.g("dblclick", this.kc);
            this.g("mousedown", this.kc);
            this.g("mouseup", this.kc);
            this.g("mouseover", this.kc);
            this.g("mouseout", this.kc);
            this.g("touchstart", this.kc);
            this.g("touchend", this.kc)
        },
        BAa: function() {
            this.G("click", this.kc);
            this.G("dblclick", this.kc);
            this.G("mousedown", this.kc);
            this.G("mouseup", this.kc);
            this.G("mouseover", this.kc);
            this.G("mouseout", this.kc);
            this.G("touchstart", this.kc);
            this.G("touchend", this.kc)
        },
        styleChanged: function() {
            this.fm = this.get("style");
            this.Dxa();
            this.set("display", 0)
        },
        X5: function(a) {
            if (a) {
                this.clear();
                for (var b = 0; b < a.length; b += 1) {
                    var c = a[b].lnglat;
                    a[b].lnglat = g.a.Ia(c);
                    c = this.map.Ab(c);
                    c = new g.Rh({ name: "point-" + g.a.ub(this), da: new g.Ca.ug([c.x, c.y], !0) });
                    c.Yq = this;
                    c.eb = a[b];
                    this.XG(c)
                }
            }
        },
        mpa: function(a) {
            if ("geojson" === a) return new g.Q9({ map: this.map });
            if ("topjson" === a) return new g.kza({ map: this.map });
            if ("subway" === a) return new g.fza({ map: this.map })
        },
        Kta: function(a) {
            if (a) {
                var b = [],
                    b = [],
                    c = {};
                if (a.rules) {
                    for (var b = a.rules, d = 0, e = b.length; d < e; d += 1) {
                        for (var f = [], h = b[d].symbolizers, k = 0, l = h.length; k < l; k += 1) h[k].fill && (f[k] = new g.style.vg.WU(h[k].fill)), h[k].stroke && (f[k] = new g.style.vg.yV(h[k].stroke));
                        h = f;
                        b[d].hK = h;
                        b[d] = new g.style.F$(b[d])
                    }
                    c.rules = b
                }
                if (a.symbolizers) {
                    b = a.symbolizers;
                    a = 0;
                    for (d = b.length; a < d; a += 1) b[a].fill && (b[a] = new g.style.vg.WU(b[a].fill)),
                        b[a].stroke && (b[a] = new g.style.vg.yV(b[a].stroke));
                    c.hK = b
                }
                a = new g.kL(c)
            } else a = new g.kL({});
            this.set("style", a);
            return a
        },
        yAa: function(a, b) {
            var c = new g.fb.vb(a);
            c.g("complete", function(c) {
                c = this.ga[a] = this.mpa(b).NS(c);
                this.qx(c);
                this.ma("complete")
            }, this);
            c.g("error", this.cc, this)
        },
        mua: function(a) { "px" === a.target.get("unit") ? (this.lf = Math.max(a.Zk, this.lf), this.Xf = Math.max(a.Zk, this.Xf)) : a.Zk > this.bs && (this.bs = a.Zk, this.Ey = this.bs / this.map.D.$i.Fp(20)) },
        XG: function(a) {
            this.Il.add(a);
            if (!this.lC &&
                !this.V.jj) {
                if (0 === a.name.indexOf("circle") || 0 === a.name.indexOf("ellipse")) {
                    a.g("rad", this.mua, this);
                    var b = a.get("radius");
                    b.length && (b = Math.max.apply(null, b));
                    "px" === a.get("unit") ? (this.lf = Math.max(b, this.lf), this.Xf = Math.max(b, this.Xf)) : this.bs ? b > this.bs && (this.bs = b, this.Ey = this.bs / this.map.D.$i.Fp(20)) : (this.bs = b, this.Ey = this.bs / this.map.D.$i.Fp(20))
                }
                b = a.get("strokeWeight") || 0;
                if (!this.Fy || b > this.Fy) this.Fy = b
            }
            this.ewa || a.W("feature", this, !0)
        },
        qx: function(a) {
            this.Tl = !0;
            for (var b = 0, c = a.length; b <
                c; b += 1) this.XG(a[b])
        },
        clear: function() {
            this.Tl = !0;
            this.xr = [];
            this.Il.clear();
            this.set("display", 0)
        },
        Ym: function(a) {
            var b, c;
            b = this.Il.Ym([a[0] + g.a.Da, a[1], a[2] + g.a.Da, a[3]]);
            c = this.Il.Ym([a[0] - g.a.Da, a[1], a[2] - g.a.Da, a[3]]);
            a = this.Il.Ym(a);
            return g.extend(a, g.extend(b, c))
        },
        xCa: function(a) {
            var b, c = this.get("style"),
                d = a.al;
            c instanceof g.kL || (c = this.Kta(c));
            if (d && 0 < d.length) b = c.G1(d, a);
            else {
                if (c.e7.length || c.al.length) b = c.Fma(a);
                b || (b = a.Poa())
            }
            return b
        },
        TQ: function(a) {
            function b(a, b) { return a.Jl - b.Jl }
            var c = [],
                d, e, f, h, k, l = {};
            for (d in a)
                if (a.hasOwnProperty(d)) {
                    f = a[d];
                    h = f.get("zIndex");
                    for (e in l)
                        if (l.hasOwnProperty(e) && (k = c[l[e]][2], k === h)) break;
                        "undefined" === typeof l[h] && (c.push([
                        [],
                        [], h
                    ]), l[h] = c.length - 1);
                    h = c[l[h]];
                    h[0].push(f)
                }
            c.sort(this.awa);
            a = 0;
            for (d = c.length; a < d; a += 1) c[a][0].sort(b);
            return c
        },
        featureChanged: function(a) {
            this.Tl = !0;
            var b = a.target,
                c = b.sc();
            0 !== this.Il.Uoa([g.a.ub(b)]).length && (this.Il.remove(b, a.av), c && !a.Yma && this.Il.add(b))
        },
        I6: function(a) {
            this.Tl = !0;
            for (var b, c = 0, d = a.length; c <
                d; c += 1) b = a[c], b.da.av = null, b.Dr(!0), b.el("feature")
        },
        zFa: function(a, b) { return a[1].zIndex === b[1].zIndex ? g.a.ub(a[1]) - g.a.ub(b[1]) : a[1].zIndex - b[1].zIndex },
        awa: function(a, b) { return a[2] - b[2] },
        lFa: function(a) { return a.DCa() === g.o.pza.$ya },
        Dl: function(a) { return this.lC ? new g.N.ye.ll(this, a) : "c" === this.map.get("overlayRender") && g.N.canvas.ll ? new g.N.canvas.ll(this, a) : g.N.Wd.ll && "d" === this.map.get("overlayRender") ? new g.N.Wd.ll(this, a) : null }
    });
    g.o.$c.zb({ El: function(a) { return this.lC ? new g.Ba.ye.ll(this, a) : this.V.jj ? new g.Ba.q$(this, a) : new g.Ba.ll(this, a) } });
    g.o.K9 = g.aa.extend({
        r: function() { this.clear() },
        clear: function() {
            this.Ip = [];
            this.JS = new g.pk
        },
        add: function(a) {
            var b = g.a.ub(a),
                c = a.sc();
            this.Ip[b] || (this.count += 1, this.Ip[b] = a, c && !g.I.cb(c.pd(), [Infinity, Infinity, -Infinity, -Infinity]) && this.JS.Sr(c.pd(), a))
        },
        sCa: function() { return this.Ip },
        Ym: function(a) { return this.JS.ova(a) },
        Uoa: function(a) {
            var b = a.length,
                c = [],
                d;
            for (d = 0; d < b; d += 1) this.Ip[a[d]] && c.push(this.Ip[a[d]]);
            return c
        },
        remove: function(a, b) {
            var c = g.a.ub(a).toString(),
                d = a.sc();
            this.Ip[c] && (this.Ip[c] =
                null, d && (c = "undefined" !== typeof b ? b : d.pd(), this.JS.remove(c, a)))
        }
    });
    g.pk = g.aa.extend({
        r: function(a) {
            this.f5 = "undefined" !== typeof a ? a : 6;
            this.ZI = Math.floor(this.f5 / 2);
            this.TJ = { I: [Infinity, Infinity, -Infinity, -Infinity], Gb: [] };
            this.count = 0
        },
        Kla: function(a, b) {
            var c = -1,
                d = [],
                e;
            d.push(b);
            var f = b.Gb;
            do {
                -1 !== c && (d.push(f[c]), f = f[c].Gb, c = -1);
                for (var h = f.length - 1; 0 <= h; h -= 1) {
                    var k = f[h];
                    if ("undefined" !== typeof k.Me) { c = -1; break }
                    var l = g.pk.ez(k.I[2] - k.I[0], k.I[3] - k.I[1], k.Gb.length + 1),
                        k = g.pk.ez((k.I[2] > a.I[2] ? k.I[2] : a.I[2]) - (k.I[0] < a.I[0] ? k.I[0] : a.I[0]), (k.I[3] > a.I[3] ? k.I[3] : a.I[3]) -
                            (k.I[1] < a.I[1] ? k.I[1] : a.I[1]), k.Gb.length + 2);
                    if (0 > c || Math.abs(k - l) < e) e = Math.abs(k - l), c = h
                }
            } while (-1 !== c);
            return d
        },
        Sr: function(a, b, c) {
            a = { I: a, Me: b };
            "undefined" !== typeof c && (a.type = c);
            this.d4(a, this.TJ);
            this.count += 1
        },
        d4: function(a, b) {
            var c;
            if (0 === b.Gb.length) b.I = g.I.jb(a.I), b.Gb.push(a);
            else {
                var d = this.Kla(a, b),
                    e = a;
                do {
                    if (c && "undefined" !== typeof c.Gb && 0 === c.Gb.length) {
                        var f = c;
                        c = d.pop();
                        for (var h = 0, k = c.Gb.length; h < k; h += 1)
                            if (c.Gb[h] === f || 0 === c.Gb[h].Gb.length) { c.Gb.splice(h, 1); break }
                    } else c = d.pop();
                    f =
                        e instanceof Array;
                    if ("undefined" !== typeof e.Me || "undefined" !== typeof e.Gb || f) {
                        if (f) {
                            f = 0;
                            for (h = e.length; f < h; f += 1) g.I.extend(c.I, e[f].I);
                            c.Gb = c.Gb.concat(e)
                        } else g.I.extend(c.I, e.I), c.Gb.push(e);
                        if (c.Gb.length <= this.f5)
                            if (0 < d.length) e = { I: g.I.jb(c.I) };
                            else break;
                        else e = f = this.qra(c.Gb), 1 > d.length && (c.Gb.push(f[0]), d.push(c), e = f[1])
                    } else g.I.extend(c.I, e.I), e = { I: g.I.jb(c.I) }
                } while (0 < d.length)
            }
        },
        qra: function(a) { for (var b = this.Ota(a); 0 < a.length;) this.Pta(a, b[0], b[1]); return b },
        Ota: function(a) {
            for (var b =
                    a.length - 1, c = 0, d = a.length - 1, e = 0, f = a.length - 2; 0 <= f; f -= 1) {
                var h = a[f];
                h.I[0] > a[c].I[0] ? c = f : h.I[2] < a[b].I[1] && (b = f);
                h.I[1] > a[e].I[1] ? e = f : h.I[3] < a[d].I[3] && (d = f)
            }
            Math.abs(a[b].I[2] - a[c].I[0]) > Math.abs(a[d].I[3] - a[e].I[1]) ? b > c ? (b = a.splice(b, 1)[0], c = a.splice(c, 1)[0]) : (c = a.splice(c, 1)[0], b = a.splice(b, 1)[0]) : d > e ? (b = a.splice(d, 1)[0], c = a.splice(e, 1)[0]) : (c = a.splice(e, 1)[0], b = a.splice(d, 1)[0]);
            return [{ I: g.I.jb(b.I), Gb: [b] }, { I: g.I.jb(c.I), Gb: [c] }]
        },
        Pta: function(a, b, c) {
            for (var d = g.pk.ez(b.I[2] - b.I[0], b.I[3] - b.I[1],
                    b.Gb.length + 1), e = g.pk.ez(c.I[2] - c.I[0], c.I[3] - c.I[1], c.Gb.length + 1), f, h, k, l = a.length - 1; 0 <= l; l -= 1) {
                var m = a[l],
                    n = [b.I[0] < m.I[0] ? b.I[0] : m.I[0], b.I[2] > m.I[2] ? b.I[2] : m.I[2], b.I[1] < m.I[1] ? b.I[1] : m.I[1], b.I[3] > m.I[3] ? b.I[3] : m.I[3]],
                    n = Math.abs(g.pk.ez(n[1] - n[0], n[3] - n[2], b.Gb.length + 2) - d),
                    m = [c.I[0] < m.I[0] ? c.I[0] : m.I[0], c.I[2] > m.I[2] ? c.I[2] : m.I[2], c.I[1] < m.I[1] ? c.I[1] : m.I[1], c.I[3] > m.I[3] ? c.I[3] : m.I[3]],
                    m = Math.abs(g.pk.ez(m[1] - m[0], m[3] - m[2], c.Gb.length + 2) - e),
                    p = Math.abs(m - n);
                if (!h || !f || p < f) h = l, f = p, k = m < n ? c :
                    b
            }
            d = a.splice(h, 1)[0];
            b.Gb.length + a.length + 1 <= this.ZI ? (b.Gb.push(d), g.I.extend(b.I, d.I)) : c.Gb.length + a.length + 1 <= this.ZI ? (c.Gb.push(d), g.I.extend(c.I, d.I)) : (k.Gb.push(d), g.I.extend(k.I, d.I))
        },
        remove: function(a, b) {
            var c = [];
            c[0] = { I: a };
            (c[1] = b) || (c[1] = !1);
            c[2] = this.TJ;
            this.count -= 1;
            if (!1 === c[1]) {
                var d = 0,
                    e = [];
                do d = e.length, e = e.concat(this.M6.apply(this, c)); while (d !== e.length);
                return e
            }
            return this.M6.apply(this, c)
        },
        M6: function(a, b, c) {
            var d = [],
                e = [],
                f = [];
            if (!a || !g.I.Gg(a.I, c.I)) return f;
            a = g.I.jb(a.I);
            var h;
            e.push(c.Gb.length);
            d.push(c);
            do {
                c = d.pop();
                var k = e.pop() - 1;
                if ("undefined" !== typeof b)
                    for (; 0 <= k;) {
                        var l = c.Gb[k];
                        if (g.I.Gg(a, l.I))
                            if (b && "undefined" !== typeof l.Me && l.Me === b || !b && ("undefined" !== typeof l.Me || g.I.C1(a, l.I))) {
                                "undefined" !== typeof l.Gb ? (f = this.Zy(l, !0, [], l), c.Gb.splice(k, 1)) : f = c.Gb.splice(k, 1);
                                g.pk.TS(c);
                                b = void 0;
                                c.Gb.length < this.ZI && (h = this.Zy(c, !0, [], c));
                                break
                            } else "undefined" !== typeof l.Gb && (e.push(k), d.push(c), c = l, k = l.Gb.length);
                        k -= 1
                    } else if ("undefined" !== typeof h) {
                        c.Gb.splice(k + 1, 1);
                        0 < c.Gb.length && g.pk.TS(c);
                        k = 0;
                        for (l = h.length; k < l; k += 1) this.d4(h[k], c);
                        h.length = 0;
                        0 === d.length && 1 >= c.Gb.length ? (h = this.Zy(c, !0, h, c), c.Gb.length = 0, d.push(c), e.push(1)) : 0 < d.length && c.Gb.length < this.ZI ? (h = this.Zy(c, !0, h, c), c.Gb.length = 0) : h = void 0
                    } else g.pk.TS(c)
            } while (0 < d.length);
            return f
        },
        search: function(a, b) { return this.Zy({ I: a }, !1, [], this.TJ, b) },
        ova: function(a, b) { return this.Zy({ I: a }, !1, [], this.TJ, b, !0) },
        Zy: function(a, b, c, d, e, f) {
            var h = {},
                k = [];
            if (!g.I.Gg(a.I, d.I)) return f ? h : c;
            k.push(d.Gb);
            do {
                d = k.pop();
                for (var l = d.length - 1; 0 <= l; l -= 1) {
                    var m = d[l];
                    if (g.I.Gg(a.I, m.I))
                        if ("undefined" !== typeof m.Gb) k.push(m.Gb);
                        else if ("undefined" !== typeof m.Me)
                        if (b) c.push(m);
                        else if ("undefined" === typeof e || m.type === e) m = m.Me, "undefined" !== typeof f ? h[g.a.ub(m)] = m : c.push(m)
                }
            } while (0 < k.length);
            return "undefined" !== typeof f ? h : c
        }
    });
    g.pk.TS = function(a) {
        var b = a.Gb.length,
            c = a.I;
        if (0 === b) g.I.empty(c);
        else {
            var d = a.Gb[0].I;
            c[0] = d[0];
            c[2] = d[2];
            c[1] = d[1];
            c[3] = d[3];
            for (d = 1; d < b; d += 1) g.I.extend(c, a.Gb[d].I)
        }
    };
    g.pk.ez = function(a, b, c) {
        var d = (a + b) / 2;
        a *= b;
        return a * c / (a / (d * d))
    };
    g.w = g.w || {};
    g.w.sh = g.aa.extend({
        ja: [g.sa, g.Pe],
        uta: ["position", "altitude", "visible", "clickable", "bubble"],
        r: function(a, b) {
            this.map = b;
            this.Qe(this.uta, a);
            this.W("zIndex", a);
            this.W("draggable", a);
            g.l.Bf && this.Yaa();
            g.l.Z || this.GL();
            this.Wb = a;
            this.Wb.w = this
        },
        draggableChanged: function() { this.get("draggable") ? this.FL() : this.wN() },
        ma: function(a, b) {
            var c;
            c = b ? { type: a, pixel: b.sb, target: this.Wb, lnglat: b.Tf } : { type: a };
            this.Wb && this.Wb.q(a, c)
        },
        kc: function(a) {
            ("click" !== a.type && "rightclick" !== a.type && "dblclick" !== a.type &&
                "longclick" !== a.type || this.get("clickable")) && this.ma(a.type, a)
        },
        EL: function() {
            this.g("click", this.kc);
            this.g("rightclick", this.kc);
            this.g("longclick", this.kc);
            this.g("longpress", this.kc);
            this.g("dblclick", this.kc)
        },
        h0: function() {
            this.G("click", this.kc);
            this.G("rightclick", this.kc);
            this.G("longclick", this.kc);
            this.G("longpress", this.kc);
            this.G("dblclick", this.kc)
        },
        GL: function() {
            this.get("clickable") && this.EL();
            this.g("mousemove", this.kc);
            this.g("mouseout", this.kc);
            this.g("mouseover", this.kc);
            this.g("mousedown",
                this.kc);
            this.g("mouseup", this.kc)
        },
        CAa: function() {
            this.h0();
            this.G("mousemove", this.kc);
            this.G("mouseout", this.kc);
            this.G("mouseover", this.kc);
            this.G("mousedown", this.kc);
            this.G("mouseup", this.kc)
        },
        clickableChanged: function() { this.get("clickable") ? this.EL() : this.h0() },
        Yaa: function() {
            this.get("clickable") && this.EL();
            this.g("touchstart", this.kc, this);
            this.g("touchmove", this.kc, this);
            this.g("touchend", this.kc, this)
        },
        FL: function() {
            this.g("dragstart", this.xt);
            this.g("dragging", this.vt);
            this.g("dragend",
                this.wt)
        },
        xt: function(a) {
            this.map.SR(a);
            this.Sf = a.sb;
            this.D4 = a.Na;
            this.C4 = a.Tf;
            this.ma("dragstart", a)
        },
        vt: function(a) {
            var b = this.map.D.view.type;
            if ("2D" == b) {
                var c = a.sb.$a(this.Sf),
                    b = c.x,
                    c = c.y;
                this.Sf = a.sb;
                var d = this.map.get("rotation") * Math.PI / 180,
                    e = b * Math.cos(d) + Math.sin(d) * c,
                    b = -Math.sin(d) * b + Math.cos(d) * c;
                this.xo(new g.H(e, b));
                this.ma("dragging", a)
            } else "3D" == b && a.Na && (c = a.sb.$a(this.Sf), b = c.x, c = c.y, e = a.Na.$a(this.D4), a.Tf.$a(this.C4), this.Sf = a.sb, "function" === typeof this.Gy && this.Gy(b, c, e), this.D4 =
                a.Na, this.C4 = a.Tf, this.ma("dragging", a))
        },
        wt: function(a) {
            this.map.Kv();
            "3D" == this.map.D.view.type && this.Wb.reset && this.Wb.reset();
            this.ma("dragend", a)
        },
        wN: function() {
            this.G("dragstart", this.xt);
            this.G("dragging", this.vt);
            this.G("dragend", this.wt)
        },
        xM: function(a) {
            var b, c, d = [];
            if (a)
                for (b = 0, c = a.length; b < c; b += 1) d.push(this.yM(a[b]));
            return d
        },
        yM: function(a) { a = this.map.Ab(a); return [a.x, a.y] },
        Vf: function(a) {
            var b = this.L.ib || this.map.get("centerCoords"),
                c = Math.pow(2, 20 - this.map.get("zoom"));
            return [(a[0] -
                b.x) / c, (a[1] - b.y) / c]
        },
        DA: function(a, b) {
            var c = this.map.D,
                d = [],
                e = !1;
            a[0] instanceof Array && "number" !== typeof a[0][0] && (e = !0);
            if (e)
                for (var e = [], f = 0, h = a.length; f < h; f++) {
                    for (var k = 0, l = a[f].length; k < l; k++) {
                        var m = c.Ab(a[f][k]);
                        m.x += b[0];
                        m.y += b[1];
                        e.push(c.Qd(m))
                    }
                    d.push(e)
                } else
                    for (e = 0, f = a.length; e < f; e++) h = c.Ab(a[e]), h.x += b[0], h.y += b[1], d.push(c.Qd(h));
            return d
        }
    });
    g.w.rb = g.w.sh.extend({
        rD: "content contentDom icon opacity angle autoRotation offset textAlign verticalAlign shadow title label isTop shape topWhenClick topWhenMouseOver noSelect anchor".split(" "),
        zka: { AMAP_ANIMATION_NONE: !1, AMAP_ANIMATION_DROP: g.wj.Easing.Bounce, AMAP_ANIMATION_BOUNCE: g.wj.Easing.Cubic },
        r: function(a, b) {
            arguments.callee.ka.apply(this, arguments);
            this.Qe(this.rD, a);
            this.W("move", a);
            this.ola();
            this.Wt();
            this.set("AnimationOffset", new g.H(0, 0), !0);
            this.W("raiseOnDrag", a);
            this.W("animation",
                a)
        },
        PM: function(a, b, c) {
            var d = this.get("animation");
            if (d && "AMAP_ANIMATION_NONE" !== d) {
                var e = this;
                this.hn = new g.wj;
                this.hn.transition = function(c, h, k) {
                    if ("AMAP_ANIMATION_NONE" === d) return 0;
                    if (a && 600 <= k) return e.hn.stop(), 0;
                    c = 0 === Math.floor(k / 600) % 2 ? "Out" : "In";
                    "out" === b ? c = "Out" : "in" === b && (c = "In");
                    return e.zka[d][c](k % 600 / 600)
                };
                c = c || 40;
                this.hn.Wp = function(a) { e.set("AnimationOffset", e.yN.add(new g.H(0, -1 * c * a))) };
                this.yN = new g.H(0, 0);
                this.hn.pn()
            }
        },
        AnimationOffsetChanged: function() { this.positionChanged() },
        j_: function() {
            this.hn && (this.hn.stop(), this.set("AnimationOffset", this.yN));
            this.set("AnimationOffset", new g.H(0, -40));
            if (this.Aq) this.Aq.set("position", this.get("position"));
            else {
                var a = new A.w.rb({ zIndex: this.get("zIndex") - 1, icon: new A.w.Th({ image: g.A.yb + "/theme/v1.3/dragCross.png", size: new g.ud(14, 11), innerOverlay: !0 }), offset: new g.H(-4, -5), position: this.get("position"), innerOverlay: !0 });
                a.za = !0;
                this.Aq = a
            }
            this.Aq.C = !0;
            this.Aq.setMap(this.map.D);
            this.Aq.C = !1
        },
        aX: function() {
            this.set("animation", "AMAP_ANIMATION_DROP", !0);
            this.PM(!0, "in");
            this.Aq.C = !0;
            this.Aq.C = !1
        },
        animationChanged: function() {
            this.hn && (this.hn.stop(), this.set("AnimationOffset", this.yN), this.hn = null);
            var a = this.get("animation");
            a && "AMAP_ANIMATION_NONE" !== a && ("AMAP_ANIMATION_DROP" === a ? this.PM(!0, "in", 100) : this.PM())
        },
        Xg: function() { this.Aq && this.Aq.set("position", this.get("position")) },
        raiseOnDragChanged: function() {
            this.get("raiseOnDrag") ? (this.g("dragstart", this.j_, this), this.g("dragging", this.Xg, this), this.g("dragend", this.aX, this)) : (this.G("dragstart",
                this.j_, this), this.G("dragging", this.Xg, this), this.G("dragend", this.aX, this))
        },
        xo: function(a) {
            var b = this.get("position");
            a = this.map.Ab(b).add(a.Gd(Math.pow(2, 20 - this.map.get("zoom"))));
            b instanceof g.T ? this.set("position", this.map.Qd(a)) : this.set("position", a)
        },
        Gy: function(a, b) {
            var c = this.get("position"),
                d = this.get("altitude"),
                c = this.map.Yr(c, d),
                d = this.map.sp(new g.H(c.x + a, c.y + b), null, d);
            this.set("position", d)
        },
        ola: function() {
            var a = this.get("content"),
                b = this.get("shadow"),
                c = this.get("offset"),
                d = this.get("label"),
                e, f = this;
            e = a ? this.U0(a, c) : this.QO(this.get("icon"), function() { f.L && f.L.ba ? (g.l.mi && g.a.iepngFix(e), f.offsetChanged(), f.vK()) : f.map && f.map.set("display") });
            this.set("contentDom", e, !0);
            b && (a = this.$0(b, c), this.set("shadowDom", a, !0));
            d && d.content && this.set("labelDom", this.RO(d.content), !0)
        },
        RO: function(a) {
            var b = document.createElement("div");
            b.className = "amap-marker-label";
            b.innerHTML = a;
            return b
        },
        Wt: function() {
            var a = this.get("position");
            if (this.map && a && !this.L) {
                var b = this.map,
                    a = this.map.Ab(a),
                    a = this.L =
                    new g.Rh({ name: "marker-" + g.a.ub(this), map: b, da: new g.Ca.ug([a.x, a.y]) });
                a.np = this.Wb.CLASS_NAME;
                a.Yq = this;
                this.W("coords", a, !0);
                a.Qe("offset textAlign verticalAlign isTop zIndex params noSelect".split(" "), this)
            }
        },
        getParams: function() {
            return {
                zIndex: this.get("zIndex"),
                lp: this.get("angle"),
                Bg: this.get("contentDom"),
                NI: this.get("labelDom"),
                z7: this.get("shadowDom"),
                opacity: this.get("opacity"),
                altitude: this.get("altitude"),
                title: this.get("title"),
                label: this.get("label"),
                xE: this.get("AnimationOffset"),
                verticalAlign: this.get("verticalAlign"),
                textAlign: this.get("textAlign"),
                offset: this.get("offset"),
                w4: this.get("isTop"),
                shape: this.get("shape"),
                visible: this.get("visible") && !this.Wb.get("outOfZooms"),
                anchor: this.get("anchor")
            }
        },
        offsetChanged: function() {
            function a(a) {
                var c = b.get("offset"),
                    f = b.get("AnimationOffset"),
                    h = b.get("verticalAlign"),
                    k = b.get("textAlign"),
                    l = Math.round(a.x) + c.x + f.x;
                a = Math.round(a.y) + c.y + f.y;
                var f = b.get("anchor"),
                    m = b.L.Hj || g.h.eo(b.L.Bg);
                b.L.Hj = m;
                c = m[0];
                m = m[1];
                f && (f = f.split("-"),
                    2 === f.length ? (k = f[1], h = f[0]) : 1 === f.length && "center" === f[0] && (k = "center", h = "middle"));
                switch (k) {
                    case "center":
                        l -= c / 2;
                        break;
                    case "right":
                        l -= c
                }
                switch (h) {
                    case "middle":
                        a -= m / 2;
                        break;
                    case "bottom":
                        a -= m
                }
                b.L.ba.style.left = l + "px";
                b.L.ba.style.top = a + "px"
            }
            if (this.map)
                if (this.L && this.L.ba) {
                    var b = this,
                        c = this.map.D.view.type;
                    "2D" == c ? (c = this.map.Ab(this.get("position")), c = c.$a(this.L.Ka).dd(Math.pow(2, 20 - this.map.get("zoom"))), this.L.ba && (this.L.ba.aB && this.L.ba.parentNode !== this.L.ba.aB ? this.map.set("display") :
                        a(c))) : "3D" == c && (c = this.get("position"), c = this.map.Yr(c, this.get("altitude")), this.L.ba && (this.L.ba.aB && this.L.ba.parentNode !== this.L.ba.aB ? this.map.set("display") : a(c)))
                } else this.map.set("display")
        },
        altitudeChanged: function() { this.offsetChanged() },
        positionChanged: function() {
            if (this.L) {
                var a = this.map.Ab(this.get("position"));
                this.set("coords", [a.x, a.y]);
                this.map && (this.L.z$ = !0, this.offsetChanged())
            }
        },
        anchorChanged: function() { this.eF() },
        textAlignChanged: function() { this.eF() },
        verticalAlignChanged: function() { this.eF() },
        eF: function() { this.L && (this.L.Hj = null, this.L.Vd = !0, this.map && (this.map.td.Rl = !0, this.map.set("display"))) },
        contentChanged: function() {
            if (this.L) {
                this.L.Hj = null;
                this.map.td.Rl = !0; - 1 === g.a.indexOf(this.map.td.Ng, this.L) && this.map.td.Ng.push(this.L);
                var a = this.get("contentDom");
                this.L.ba && this.L.ba === a.parentNode && this.L.ba.removeChild(a);
                var a = this.get("content"),
                    b = this.get("offset"),
                    a = this.U0(a, b);
                this.set("contentDom", a);
                this.L.ba ? (g.l.mi && g.a.iepngFix(a), this.L.ba.appendChild(a), this.L.Bg = a, this.offsetChanged(),
                    this.vK()) : this.map && this.map.set("display")
            }
        },
        iconChanged: function() {
            if (this.L && this.L.ba && !this.get("content")) {
                this.L.Hj = null;
                this.map.td.Rl = !0; - 1 === g.a.indexOf(this.map.td.Ng, this.L) && this.map.td.Ng.push(this.L);
                this.L.ba && this.get("contentDom") && this.L.ba.removeChild(this.get("contentDom"));
                var a = this.get("icon");
                this.get("offset");
                var b = this,
                    c = this.QO(a, function() { b.L && b.L.ba ? (g.l.mi && g.a.iepngFix(c), b.offsetChanged(), b.vK()) : b.map && b.map.set("display") });
                this.set("contentDom", c);
                this.L.ba &&
                    (this.L.ba.appendChild(c), this.L.Bg = c)
            }
        },
        shadowChanged: function() {
            if (this.L && this.L.ba) {
                var a = this.get("shadowDom");
                this.L.ba && a && a.parentNode === this.L.ba && this.L.ba.removeChild(a);
                if (a = this.get("shadow")) {
                    var b = this.get("offset"),
                        a = this.$0(a, b);
                    this.set("shadowDom", a);
                    this.L.ba && this.L.ba.appendChild(a)
                }
            }
        },
        titleChanged: function() { this.L && this.L.Bg && "string" === typeof this.get("title") && this.L.Bg && this.get("title") && (this.L.Bg.title = this.get("title")) },
        vK: function(a, b) {
            a = a || this.get("label");
            b = b ||
                this.get("labelDom");
            if (a && b) {
                var c = a.direction,
                    d = this.L.Hj || g.h.eo(this.L.Bg),
                    e = d[0],
                    d = d[1],
                    f = g.h.eo(b),
                    h = f[0],
                    k = f[1];
                this.L.Su = f;
                var l = f = 0;
                switch (c) {
                    case "top":
                        f = -k;
                        l = (e - h) / 2;
                        break;
                    case "right":
                        f = (d - k) / 2;
                        l = e;
                        break;
                    case "bottom":
                        f = d;
                        l = (e - h) / 2;
                        break;
                    case "left":
                        f = (d - k) / 2;
                        l = -h;
                        break;
                    case "center":
                        f = (d - k) / 2, l = (e - h) / 2
                }
                a.offset && (f += a.offset.y, l += a.offset.x);
                b.style.top = f + "px";
                b.style.left = l + "px"
            }
        },
        labelChanged: function(a) {
            a = a || this.get("label");
            if (this.L && this.L.ba) {
                this.L.Su = null;
                var b = this.L.ba,
                    c =
                    this.get("labelDom");
                c && c.parentNode === b && b.removeChild(c);
                a && a.content && (c = "", a.content && (c = this.RO(a.content), b.appendChild(c), this.vK(a, c)), this.set("labelDom", c))
            } else a && a.content ? this.set("labelDom", this.RO(a.content), !0) : this.set("labelDom", null)
        },
        isTopChanged: function() {
            var a = this.map.td.lK,
                b = this.get("isTop"),
                c = this.get("zIndex");
            a ? a === this ? this.L && this.L.ba && (this.L.ba.style.zIndex = b ? this.map.td.rq + 10 : c, this.map.td.lK = b ? this : null) : (a.L && a.L.ba && (a.L.ba.style.zIndex = b ? a.get("zIndex") : this.map.td.rq +
                10), this.L && this.L.ba && (this.L.ba.style.zIndex = b ? this.map.td.rq + 10 : c), this.map.td.lK = b ? this : a) : (this.map.td.lK = this, this.L && this.L.ba && (this.L.ba.style.zIndex = b ? this.map.td.rq + 10 : c))
        },
        visibleChanged: function() { this.L && this.L.ba && (this.get("visible") && !this.Wb.get("outOfZooms") ? this.L.ba.style.display = "block" : this.L.ba.style.display = "none") },
        lta: function() { this.visibleChanged() },
        angleChanged: function() {
            if (!g.l.ue && this.L && this.L.ba) {
                var a = this.L,
                    b = a.get("params"),
                    c = b.textAlign,
                    d = b.verticalAlign,
                    e =
                    b.offset,
                    b = e.x,
                    e = e.y;
                this.eF();
                if ("AMap.Text" == a.np) {
                    var e = b = 0,
                        f = a.Hj || g.h.eo(a.Bg),
                        h = f[0],
                        k = f[1];
                    a.Hj = f;
                    switch (c) {
                        case "center":
                            b = h / 2;
                            break;
                        case "right":
                            b = h
                    }
                    switch (d) {
                        case "middle":
                            e = k / 2;
                            break;
                        case "bottom":
                            e = k
                    }
                } else b = -b, e = -e;
                g.h.rotate(this.L.ba, this.get("angle") || 0, { x: b, y: e })
            }
        },
        zIndexChanged: function() {
            var a = this.get("zIndex");
            if (a > this.map.td.rq) {
                this.map.td.rq = a;
                var b = this.map.td.lK;
                b && b.L && b.L.ba && (b.L.ba.style.zIndex = a + 10)
            }
            this.L && this.L.ba && (this.L.ba.style.zIndex = this.get("isTop") ? this.map.td.rq +
                10 : this.get("zIndex"))
        },
        opacityChanged: function() {
            var a = this.get("contentDom"),
                b = this.get("shadowDom");
            a && g.h.hq(a, this.get("opacity"));
            b && g.h.hq(b, this.get("opacity"))
        },
        U0: function(a) {
            var b;
            b = document.createElement("div");
            b.className = "amap-marker-content";
            "string" !== typeof a ? b.appendChild(a) : (b.innerHTML = a, b.childNodes[0] && !b.childNodes[0].style && (b.style["white-space"] = "pre"));
            g.h.hq(b, this.get("opacity"));
            return b
        },
        QO: function(a, b) {
            var c, d = 0,
                e = 0,
                f, h, k, l, m, n;
            a ? ("string" === typeof a ? (c = a, n = !0) : (c =
                a.get("image"), e = a.get("size"), f = a.get("imageSize"), d = e.width, e = e.height, f && (l = f.width, m = f.height)), f = "string" !== typeof a ? a.get("imageOffset") : { x: 0, y: 0 }) : (c = g.A.ri + "/mark_bs.png", f = { x: 0, y: 0 }, d = 19, e = 33, l = 19, m = 33);
            h = document.createElement("div");
            h.className = "amap-icon";
            h.style.position = "absolute";
            h.style.overflow = n ? "inherit" : "hidden";
            d && (h.style.width = d + "px");
            e && (h.style.height = e + "px");
            k = document.createElement("img");
            l && m && (k.style.width = l + "px", k.style.height = m + "px");
            k.style.top = f.y + "px";
            k.style.left =
                f.x + "px";
            h.appendChild(k);
            g.h.hq(g.l.ue && n ? k : h, this.get("opacity"));
            d && e || (h.xL = !1);
            g.F.g(k, "load", function q() {
                this.L && (this.L.Hj = null);
                this.map && this.map.td && (this.map.td.Rl = !0);
                g.F.G(k, "load", q, this);
                if (this.L && this.L.ba) {
                    var a = this.get("labelDom");
                    a && this.L.ba.appendChild(a)
                }
                h.xL = !0;
                b && b()
            }, this);
            k.src = c;
            return h
        },
        $0: function(a) {
            a = this.QO(a);
            a.style.zIndex = -1;
            return a
        },
        moveChanged: function() {
            var a = this.get("move");
            if (!1 === a) return this.lwa();
            void 0 !== a && ("pause" === a.action ? this.Mta() : "[object Array]" ===
                Object.prototype.toString.call(a.Tf) ? a.Tf && ("resume" === a.action && this.YF ? this.moveTo(a.Tf[a.Tf.ep || 0], a.speed, a.tb) : (this.YF && this.q("movestop"), a.Tf.ep = 0, this.set("position", a.Tf[0]), this.osa(a.Tf, a.speed, a.tb, a.Ola))) : this.moveTo(a.Tf, a.speed, a.tb, !0))
        },
        moveTo: function(a, b, c, d) {
            if (!(0 >= b)) {
                var e = this.get("position");
                a.$a(e);
                var f = Math.round(a.re(e) / 1E3 / b * 36E5);
                if (0 === f) return this.q("moveend");
                this.ti && (this.ti.stop(), this.ti = null);
                this.ti = new g.wj(e, a);
                c = c || function(a) { return a };
                this.ti.transition =
                    function(a, b, d) {
                        if (d >= f) return b;
                        var e = (b.Q - a.Q) * c(d / f) + a.Q;
                        a = (b.P - a.P) * c(d / f) + a.P;
                        return new g.T(e, a)
                    };
                this.ti.Wp = function(b) {
                    this.set("position", b);
                    d && this.Wb.q("moving", { passedPath: [this.ti.start, this.get("position")] });
                    this.q("moving");
                    b.cb(a) && (this.ti && (this.ti.stop(), this.ti = null), this.Wb.q("moveend"), this.q("moveend"))
                };
                this.get("autoRotation") && !g.l.ue && (b = "2D" == (this.map.D.view.type || "2D") ? this.nda(e, a) : this.oda(e, a), this.set("angle", b));
                this.ti.pn(this)
            }
        },
        lwa: function() {
            this.ti && (this.ti.stop(),
                this.ti = null, this.q("movestop"))
        },
        Mta: function() { this.ti && (this.ti.stop(), this.ti = null, this.q("movepause")) },
        osa: function(a, b, c, d) {
            function e() {
                var b = a.slice(0, a.ep || 0);
                b.push(this.get("position"));
                this.Wb.q("moving", { passedPath: b })
            }

            function f() { a.ep < a.length - 1 ? (a.ep += 1, this.moveTo(a[a.ep], b, c)) : (this.ma("movealong"), d ? (a.ep = 0, this.set("position", a[0]), this.moveTo(a[a.ep], b, c)) : this.q("movestop")) }
            var h = Math.min(a.ep || 0, a.length - 1);
            this.YF || (this.YF = !0, this.g("moving", e, this), this.g("moveend", f, this),
                this.g("movestop", function l() {
                    this.YF = !1;
                    this.G("moveend", f, this);
                    this.G("moving", e, this);
                    this.G("movestop", l, this)
                }, this));
            this.moveTo(a[h], b, c)
        },
        oda: function(a, b) {
            var c = this.map,
                d = c.Yr(a),
                c = c.Yr(b),
                e = 0;
            c.re(d);
            var f = c.y - d.y,
                h = c.x - d.x;
            0 !== c.x - d.x ? (e = Math.atan((c.y - d.y) / (c.x - d.x)), 0 <= f && 0 > h ? e = Math.PI + e : 0 > f && 0 >= h ? e = Math.PI + e : 0 > f && 0 <= h && (e = 2 * Math.PI + e)) : e = c.y > d.y ? Math.PI / 2 : 3 * Math.PI / 2;
            return g.a.lc(180 * e / Math.PI, 1)
        },
        nda: function(a, b) {
            var c = this.map,
                d = c.Ab(a),
                c = c.Ab(b),
                e = 0;
            c.re(d);
            var f = c.y - d.y,
                h = c.x -
                d.x;
            0 !== c.x - d.x ? (e = Math.atan((c.y - d.y) / (c.x - d.x)), 0 <= f && 0 > h ? e = Math.PI + e : 0 > f && 0 >= h ? e = Math.PI + e : 0 > f && 0 <= h && (e = 2 * Math.PI + e)) : e = c.y > d.y ? Math.PI / 2 : 3 * Math.PI / 2;
            return g.a.lc(180 * e / Math.PI, 1)
        }
    });
    g.w.un = g.w.sh.extend({
        r: function(a, b) {
            arguments.callee.ka.apply(this, arguments);
            this.W("items", a, !0);
            this.W("content", a, !0);
            this.W("resolution", b);
            this.W("centerCoords", b);
            this.mp = a
        },
        Ky: function(a) {
            this.Fg();
            this.Ls();
            this.im();
            this.el("resolution");
            this.el("centerCoords");
            this.el("render");
            this.W("resolution", a);
            this.W("centerCoords", a);
            this.W("render", a);
            this.map.g("movestart", this.Cm, this);
            this.map.g("mapmove", this.Cm, this);
            this.map.g("zoomstart", this.Cm, this);
            this.map.g("click", this.Cm, this);
            this.map.g("closeOverlays", this.Cm, this);
            this.map.g("rotate", this.Cm, this)
        },
        Cm: function() { this.mp.map && (this.mp.C = !0, this.mp.close(), this.mp.C = !1) },
        mapChanged: function() {},
        positionChanged: function() { this.im() },
        renderChanged: function() { this.im() },
        Fg: function() {
            this.J && (this.J.parentNode && this.J.parentNode.removeChild(this.J), this.J = null);
            var a = g.h.create("div", null, "amap-menu");
            g.F.g(a, "mousedown", function(a) { g.F.stopPropagation(a) }, this);
            this.J = a;
            this.map.Sa.w.appendChild(this.J)
        },
        Ls: function() {
            var a =
                this,
                b = this.J;
            b.innerHTML = "";
            var c = this.get("content");
            if ("object" === typeof c) b.appendChild(c);
            else if ("string" === typeof c) b.innerHTML = c;
            else if ((c = this.get("items")) && c.length) {
                var d = g.h.create("ul", b, "amap-menu-outer");
                c.sort(function(a, b) { return isNaN(a.nJ) || isNaN(b.nJ) ? 0 : a.nJ - b.nJ });
                for (b = 0; b < c.length; b += 1)(function(b) {
                    var c = b.Js,
                        h = b.tb,
                        k = g.h.create("li", d);
                    k.innerHTML = c;
                    g.F.g(k, "click", function() {
                        h.call(k);
                        a.mp.C = !0;
                        a.mp.close();
                        a.mp.C = !1
                    }, k)
                })(c[b])
            } else this.J.innerHTML = ""
        },
        im: function() {
            var a =
                this.map,
                b = this.J;
            a && b && (this.map.get("zoom"), b = this.get("position"), b = a.Yr(b), a = b.y, b = b.x, this.J.style.right = "", this.J.style.bottom = "", this.J.style.left = b + "px", this.J.style.top = a + "px")
        },
        Pg: function() { this.J && (this.map.G("click", this.Uza, this), this.map.Sa.w.removeChild(this.J), this.mp.ei = !1, this.J = this.mp.He.map = null, this.map.G("movestart", this.Cm, this), this.map.G("zoomstart", this.Cm, this), this.map.G("click", this.Cm, this), this.map.G("closeOverlays", this.Cm, this), this.map.G("rotate", this.Cm, this)) },
        visibleChanged: function() { this.J && (this.get("visible") ? this.J.style.display = "block" : this.J.style.display = "none") },
        itemsChanged: function() { this.J && this.Ls() }
    });
    g.w.Oe = g.w.sh.extend({
        r: function(a, b) {
            arguments.callee.ka.apply(this, arguments);
            this.Qe("content contentDom position contentU altitude isCustom autoMove showShadow closeWhenClickMap size offset anchor".split(" "), a);
            this.W("retainWhenClose", a, !0);
            a.W("toBeClose", this);
            this.df = a
        },
        Ky: function(a) {
            this.pma || (this.Fg(), this.Ls());
            this.el("resolution");
            this.el("centerCoords");
            this.el("render");
            this.W("resolution", a);
            this.W("centerCoords", a);
            this.W("render", a);
            this.map = a;
            a.Sa.w.appendChild(this.Yb);
            this.vU();
            this.im();
            this.cW();
            this.pma = !0;
            this.ema();
            this.Wb.q("onAdd", { type: "onAdd", target: this.Wb })
        },
        Fg: function() {
            var a = g.h.create("div");
            a.className = "amap-info";
            var b = g.h.create("div", a, "amap-info-shadowContainer"),
                c = g.h.create("div", a),
                d = this.get("anchor"),
                e = "amap-info-contentContainer";
            d && (e = d + " amap-info-contentContainer");
            d = g.h.create("div", c, e);
            a.style.position = "absolute";
            c.style.position = "absolute";
            c.style.bottom = "0px";
            c.style.left = "0px";
            b.style.position = "absolute";
            this.Yb = a;
            this.Rf = c;
            this.CT = b;
            this.fh =
                d;
            this.set("contentDom", this.fh, !0)
        },
        Ls: function() {
            var a = this.get("contentU");
            if (a) {
                var b = this.get("isCustom"),
                    c = this.fh,
                    d = this.CT;
                c.innerHTML = "";
                var e = null;
                if (b) {
                    if ("string" === typeof a) c.innerHTML = a;
                    else if (a instanceof Array)
                        for (e = 0; e < a.length; e += 1) c.appendChild(a[e]);
                    else c.appendChild(a);
                    e = c;
                    d.parentNode && d.parentNode.removeChild(d)
                } else {
                    e = "amap-info-content amap-info-outer";
                    g.l.ue && (e += " amap-info-content-ie8");
                    e = this.sqa = d = g.h.create("div", c, e);
                    "string" === typeof a ? d.innerHTML = a : d.appendChild(a);
                    this.rma = d;
                    a = g.h.create("a", this.sqa, "amap-info-close");
                    a.innerHTML = "\u00d7";
                    this.hP = a;
                    a.href = "javascript: void(0)";
                    g.l.Bf && (g.F.g(a, "touchstart", function(a) { g.F.stop(a) }, this), g.F.g(a, "touchend", function(a) {
                        g.F.stop(a);
                        this.df.C = !0;
                        this.df.close();
                        this.df.C = !1
                    }, this), g.F.g(a, "click", function(a) {
                        g.F.stop(a);
                        this.df.C = !0;
                        this.df.close();
                        this.df.C = !1
                    }, this));
                    g.l.Z || (g.F.g(a, "mousedown", function(a) { g.F.stop(a) }, this), g.F.g(a, "click", function(a) {
                            g.F.stop(a);
                            this.df.C = !0;
                            this.df.close();
                            this.df.C = !1
                        },
                        this));
                    if (a = this.get("size", !0)) 0 !== a.width && (d.style.width = a.width + "px"), 0 !== a.height && (d.style.height = a.height + "px");
                    this.get("anchor");
                    g.h.create("div", c, g.l.ue ? "amap-info-sharp-old" : "amap-info-sharp");
                    this.CT.style.display = "block"
                }
                g.F.jwa(e)
            }
        },
        vU: function() {
            var a = this.get("isCustom"),
                b = this.get("showShadow");
            if (!a && b) {
                var a = this.CT,
                    b = g.h.qI(this.fh),
                    c = b.height - 23,
                    d = b.width;
                if (g.l.mi || g.l.Iu) c = this.fh.childNodes[0].offsetHeight, d = this.fh.childNodes[0].offsetWidth + 26;
                b = "background-image:url(" + g.A.yb +
                    (g.l.mi ? "/theme/v1.3/iws.gif);" : "/theme/v1.3/iws.png);");
                a.innerHTML = "";
                var e = [],
                    f;
                f = e[1] = {};
                f.height = 0.5 * c + 4;
                f.width = d;
                f.offsetX = 400;
                f.offsetY = 16;
                f.top = -f.height - 10 - 15;
                f.left = 23;
                f = e[2] = {};
                f.height = e[1].height;
                f.width = e[1].height;
                f.offsetX = 1075 - f.width;
                f.offsetY = e[1].offsetY;
                f.top = e[1].top;
                f.left = 23 + e[1].width;
                f = e[3] = {};
                f.height = 10;
                f.width = 22;
                f.offsetX = 30;
                f.offsetY = 445;
                f.top = -25;
                f.left = 23 + (g.l.Iu || g.l.mi ? 5 : 0);
                f = e[4] = {};
                f.height = 10;
                f.width = d / 2 - 15 - e[3].left - e[3].width;
                f.offsetX = 132;
                f.offsetY = 445;
                f.top = -25;
                f.left = e[3].left + e[3].width;
                f = e[5] = {};
                f.height = 10;
                f.width = 70;
                f.offsetX = 80;
                f.offsetY = 445;
                f.top = -25;
                f.left = e[4].left + e[4].width;
                f = e[6] = {};
                f.height = 10;
                f.width = d - e[5].left - e[5].width;
                f.offsetX = 132;
                f.offsetY = 445;
                f.top = -25;
                f.left = e[5].left + e[5].width;
                f = e[7] = {};
                f.height = 10;
                f.width = 30;
                f.offsetX = 621;
                f.offsetY = 445;
                f.top = -25;
                f.left = d;
                f = e[8] = {};
                f.height = 15;
                f.width = 70;
                f.offsetX = 47;
                f.offsetY = 470;
                f.top = -15;
                f.left = d / 2 - 15;
                for (c = 1; 8 >= c; c += 1) d = g.h.create("div", a), f = [], f.push("position:absolute;"), f.push(b), f.push("top:" +
                    e[c].top + "px;"), f.push("left:" + e[c].left + "px;"), f.push("width:" + e[c].width + "px;"), f.push("height:" + e[c].height + "px;"), f.push("background-position:" + -e[c].offsetX + "px " + -e[c].offsetY + "px;"), d.style.cssText = f.join("")
            }
        },
        bGa: function() {},
        im: function() {
            var a = this.map,
                b = this.Yb,
                c = this.get("position"),
                d = this.get("anchor");
            if (a && b && c) {
                a = a.Yr(c, this.get("altitude"));
                d && (this.fh.className = d + " amap-info-contentContainer");
                var e = g.h.qI(this.fh);
                if (g.l.mi || g.l.Iu) e.width = this.fh.childNodes[0].offsetWidth + 14;
                b = e.height;
                c = this.get("offset");
                this.get("isCustom");
                e = e.width;
                this.Yb.style.left = Math.round(a.x - e / 2 + (c.x || 0)) + "px";
                this.Yb.style.top = Math.round(a.y + (c.y || 0)) + "px";
                if (d) {
                    var f;
                    "center" == d ? (d = "center", f = "middle") : (f = d.split("-"), d = f[1], f = f[0]);
                    switch (f) {
                        case "middle":
                            this.Yb.style.top = Math.round(a.y + b / 2 + (c.y || 0)) + "px";
                            break;
                        case "top":
                            this.Yb.style.top = Math.round(a.y + b + (c.y || 0)) + "px"
                    }
                    switch (d) {
                        case "left":
                            this.Yb.style.left = Math.round(a.x + (c.x || 0)) + "px";
                            break;
                        case "right":
                            this.Yb.style.left = Math.round(a.x -
                                e + (c.x || 0)) + "px"
                    }
                }
                d = this.rma;
                if (this.hP && d.childNodes[0]) {
                    for (b = a = 0; b < d.childNodes.length; b += 1) a += d.childNodes[0].clientHeight || 0;
                    a > (this.get("size").height || d.clientHeight) ? this.hP.style.right = "20px" : this.hP.style.right = "5px"
                }
            }
        },
        Sba: function() {
            var a = new g.H(2 - this.fh.offsetWidth / 2, 2 - this.fh.offsetHeight),
                b = this.get("offset") || new g.H(0, 0),
                c = this.get("anchor");
            if (c) {
                var a = this.fh.offsetWidth,
                    d = this.fh.offsetHeight,
                    e, f, h = 2 - a / 2,
                    k = 2 - d;
                c && (c = c.split("-"), 2 === c.length ? (e = c[1], f = c[0]) : 1 === c.length && "center" ===
                    c[0] && (e = "center", f = "middle"));
                switch (e) {
                    case "left":
                        h = 2;
                        break;
                    case "right":
                        h = -a
                }
                switch (f) {
                    case "middle":
                        k = -d / 2;
                        break;
                    case "top":
                        k = -2
                }
                a = new g.H(h, k)
            }
            this.get("isCustom") || (a = a.add(new g.H(0, -23)));
            return a.add(b)
        },
        altitudeChanged: function() { this.im() },
        cW: function() {
            if (this.get("position") && this.get("autoMove") && this.fh) {
                for (var a = this.map, b = new g.ud(this.fh.offsetWidth, this.fh.offsetHeight), c = a.Yr(this.get("position"), this.get("altitude")).add(this.Sba()), d = c.add(b.$D()), e = a.get("size"), f = a.Hoa(),
                        h = 0, k = 0, l = 0; l < f.length; l += 1) {
                    var m = f[l],
                        n = 0,
                        p = 0;
                    0 === m[1] && 0 === m[2] ? (n = m[3] - (c.x + h), p = m[0] - (c.y + k), 0 < n && 0 < p && (Math.abs(n) < Math.abs(p) ? h += n : k += p)) : 0 === m[2] && 0 === m[3] ? (n = e.hj() - m[1] - (d.x + h), p = m[0] - (c.y + k), 0 > n && 0 < p && (Math.abs(n) < Math.abs(p) ? h += n : k += p)) : 0 === m[0] && 0 === m[3] ? (n = e.hj() - m[1] - (d.x + h), p = e.fj() - m[2] - (d.y + k), 0 > n && 0 > p && (Math.abs(n) < Math.abs(p) ? h += n : k += p)) : 0 === m[0] && 0 === m[1] && (n = m[3] - (c.x + h), p = e.fj() - m[2] - (d.y + k), 0 < n && 0 > p && (Math.abs(n) < Math.abs(p) ? h += n : k += p))
                }
                c = c.add(new g.H(h, k));
                d = d.add(new g.H(h,
                    k));
                l = f = 0;
                0 > c.x || b.hj() > e.hj() ? f = 20 - c.x : e.hj() < d.x && (f = e.hj() - d.x - 25);
                0 > c.y || b.fj() > e.fj() ? l = 5 - c.y : e.fj() < d.y && (l = e.fj() - d.y - 15);
                f += h;
                l += k;
                if (f || l) a.D.C = !0, a.D.panBy(f, l), a.D.C = !1
            }
        },
        ema: function() { this.get("closeWhenClickMap") && (this.map.g("clickstart", this.nZ, this, !1), this.map.g("clickend", this.mZ, this, !1)) },
        nZ: function() { this.df.ei && (this.df.C = !0, this.df.getIsOpen() && (this.df.kK = !0), this.df.C = !1) },
        mZ: function() { this.df.ei && (this.df.kK && (this.df.C = !0, this.df.close(), this.df.C = !1), this.df.kK = !1) },
        Pg: function() { this.Yb && this.map && (this.df.kK = !1, this.get("closeWhenClickMap") && (this.map.G("clickstart", this.nZ, this), this.map.G("clickend", this.mZ, this)), this.get("retainWhenClose") ? this.map.rl.appendChild(this.Yb) : (this.Yb.parentNode === this.map.Sa.w && this.map.Sa.w.removeChild(this.Yb), this.df.w = null), this.map = null, this.df.ei = !1, this.Wb.q("close", { type: "close", target: this.Wb })) },
        dAa: function() {
            if (!this.get("isCustom")) return this.fh.offsetWidth;
            for (var a = this.Wh, b = a.firstChild, c = a.lastChild; b && c &&
                b.style && c.style && b === c;) a = b, b = a.firstChild, c = a.lastChild;
            a = g.h.Dd(a, "width");
            return a = parseInt(a.replace("px", ""), 10)
        },
        renderChanged: function() { this.im() },
        positionChanged: function() { this.map && this.Yb && (this.im(), this.cW()) },
        anchorChanged: function() { this.positionChanged() },
        offsetChanged: function() { this.positionChanged() },
        contentChanged: function() {
            this.Ls();
            this.vU();
            this.im()
        },
        sizeChanged: function() {
            this.Ls();
            this.vU();
            this.im()
        }
    });
    g.Ca = {};
    g.Ca.Fe = g.aa.extend({
        ja: [g.sa, g.Pe],
        r: function() {},
        uu: function() {
            var a = this.pd();
            a.eh || (a.eh = g.I.ki(a));
            return a.eh
        },
        jb: function() { return new this.r(this.va) },
        rQ: function() { return this.va },
        setCoords: function(a) { this.Cva(a) },
        Cva: function(a) {
            this.av = this.pd();
            this.jg = null;
            if (g.Ca.Ec && this instanceof g.Ca.Ec) {
                var b = a.length;
                this.yf = Array(b);
                for (var c, d, e = 0; e < b; e += 1)
                    if (c = a[e], d = new g.Ca.iV(c), this.yf[e] = d, 0 === e) {
                        if (0 === c.length) break;
                        d.Lp(c) || c.reverse()
                    } else 0 !== c.length && d.Lp(c) && c.reverse()
            } else this.va = a
        }
    });
    g.Ca.Ge = g.extend({}, { lw: "point", QK: "linestring", hV: "linearring", PE: "polygon", $K: "multipoint", ZK: "multilinestring", ME: "multipolygon", Kya: "geometrycollection" });
    g.Rh = g.aa.extend({
        ja: [g.sa, g.Pe],
        r: function(a) {
            a = a || {};
            a.MA && (this.MA = a.MA);
            a.RM && (this.RM = a.RM);
            a.xY && (this.xY = a.xY);
            this.map = a.map;
            this.Jl = a.sM || g.a.ub(this);
            this.name = a.name || "";
            this.Vd = !1;
            this.set("visible", !0, !0);
            this.vT(a.da);
            this.al = a.hK;
            this.style = a.style
        },
        gna: function() {
            this.name = this.map = null;
            this.style = this.al = this.Yq = this.K4 = this.da = this.da.Aa = null;
            this.fl();
            this.hi()
        },
        Cpa: function() { return this.al },
        Pva: function(a) {
            this.al = a;
            this.zIndex = this.al[0].nk || this.zIndex
        },
        sc: function() { return this.da },
        vT: function(a) { a && (this.da = a, this.W("coords", a, !0), this.MA || this.RM) && (a.W("radius", this), a.W("center", this), a.W("resolution", this), a.W("strokeWeight", this)) },
        setStyle: function(a) {
            this.Pva(a);
            this.Dr()
        },
        coordsChanged: function() { this.Dr() },
        radiusChanged: function() {
            this.da.av = this.da.pd();
            this.da.jg = null;
            this.Dr()
        },
        Dr: function(a) {
            this.set("feature", { target: this, Yma: a, av: this.da.av || this.da.pd(), tsa: this.da.pd() });
            this.da.av = this.da.pd()
        },
        visibleChanged: function() { this.Dr() },
        ICa: function(a) {
            for (var b =
                    0; b < this.al.length; b += 1) { var c = this.al[b]; if (a.cb(c.Gx(this))) return c }
        },
        Poa: function() {
            var a = this.sc(),
                b = [];
            a.li() === g.Ca.Ge.PE || a.li() === g.Ca.Ge.ME ? b.push(new g.style.ne.Ec({ fillColor: "#78cdd1", ae: 0.2, strokeColor: "#122e29", kb: 0.5, hc: 1 })) : a.li() === g.Ca.Ge.QK || a.li() === g.Ca.Ge.hV || a.li() === g.Ca.Ge.ZK ? b.push(new g.style.ne.Ro({ color: "#888888", width: 1, zIndex: 10 })) : a.li() !== g.Ca.Ge.lw && a.li() !== g.Ca.Ge.$K || b.push(new g.style.ne.Th({
                url: g.A.yb + "/theme/v1.3/markers/0.png",
                width: 36,
                height: 36,
                rotation: 0,
                tGa: -12,
                vGa: -36,
                zIndex: 100
            }));
            return b
        }
    });
    g.Rh.Fya = "geometry";
    g.Ca.ug = g.Ca.Fe.extend({
        r: function(a, b) {
            this.va = a;
            this.jj = b;
            this.jg = null
        },
        pd: function() {
            if (!this.jg) {
                var a = this.va[0],
                    b = this.va[1];
                if (this.jj) this.jg = [a, b, a, b];
                else {
                    var c = this.get("radius"),
                        d = this.get("resolution") * this.get("strokeWeight") || 0,
                        c = c ? c / Math.cos(Math.PI * this.get("center").P / 180) : 0;
                    this.jg = [a - c - d, b - c - d, a + c + d, b + c + d]
                }
            }
            return this.jg
        },
        li: function() { return g.Ca.Ge.lw }
    });
    g.N = { canvas: {}, Wd: {}, Ne: {}, ye: {} };
    g.N.ac = g.aa.extend({
        ja: [g.sa, g.Pe],
        r: function(a, b) {
            this.j = a;
            this.jj = a.V.jj;
            this.K = b;
            this.e = b.e;
            this.W("display", b)
        },
        Lj: function() {
            this.bv && this.bv();
            this.fl();
            this.e = this.K = this.j = null
        },
        wu: function(a, b, c, d) {
            var e = this.zoom;
            c = [];
            var f = this.j;
            if (Math.floor(e) !== e) b(c, f);
            else {
                a = [a.x, a.y];
                if (f.Rl) {
                    for (var e = f.Ng, h = !0, k = [], l = 0; l < e.length; l += 1) {
                        var m = e[l].Bg;
                        if (m)
                            if (m.parentNode && m.parentNode.parentNode && this.K && m.parentNode.parentNode !== this.K.rl && "none" !== m.parentNode.style.display) {
                                var n = g.h.eo(m),
                                    m =
                                    n[0],
                                    n = n[1];
                                if (m && n) {
                                    var p = Math.max(Math.abs(e[l].get("offset").x), Math.abs(e[l].get("offset").y)) + Math.max(m, n);
                                    f.lf = Math.max(f.lf, p);
                                    f.Xf = Math.max(f.Xf, p);
                                    e[l].width = m;
                                    e[l].height = n
                                } else h = !1, k.push(e[l])
                            } else h = !1, k.push(e[l])
                    }
                    h ? (f.Rl = !1, f.Ng = []) : f.Ng = k
                }
                e = Math.max(f.lf, f.Fy || 0) * this.S;
                h = Math.max(f.Xf, f.Fy || 0) * this.S;
                k = 0;
                f.Ey && (k = f.Ey / Math.cos(Math.PI * this.e.get("center").P / 180));
                h = Math.max(h, k || 0);
                e = Math.max(e, k || 0);
                if (e = f.Ym([a[0] - e, a[1] - h, a[0] + e, a[1] + h])) {
                    for (var q in e)
                        if (e.hasOwnProperty(q) &&
                            (h = e[q], h.get("visible") && !h.get("noSelect")))
                            if (k = h.sc(), k instanceof g.Ca.ug)
                                if (this.jj) {
                                    l = this.j.fm;
                                    l instanceof Array && (l = "number" === typeof h.eb.style && l[h.eb.style] ? l[h.eb.style] : l[0]);
                                    var m = l.size.width * this.S,
                                        n = l.size.height * this.S,
                                        p = l.anchor.x * this.S,
                                        r = l.anchor.y * this.S,
                                        k = k.va,
                                        s = l.rotation_,
                                        u = [a[0], a[1]];
                                    if (s) {
                                        var v = (a[0] - k[0]) / this.S,
                                            x = (a[1] - k[1]) / this.S,
                                            t = s,
                                            s = Math.cos(-t),
                                            w = Math.sin(-t),
                                            t = v * s - x * w,
                                            v = v * w + x * s;
                                        u[0] = k[0] + t * this.S;
                                        u[1] = k[1] + v * this.S
                                    }
                                    m = g.I.NO([
                                        [u[0] - m + p, u[1] - n + r],
                                        [u[0] + p, u[1] +
                                            r
                                        ]
                                    ]);
                                    g.I.Nd(m, k) && c.push(h)
                                } else if ("undefined" !== typeof k.get("radius")) l = k.va, l = new g.H(l[0], l[1]), m = new g.H(a[0], a[1]), k = k.get("radius"), "px" === h.get("unit") ? m.re(l) / Math.pow(2, 20 - this.zoom) < k && c.push(h) : m.re(l) * Math.cos(h.get("center").P * Math.PI / 180) <= k / this.Rp * Math.pow(2, 20 - this.zoom) && c.push(h);
                    else if ("AMap.Text" == h.np) l = h.get("params"), l.visible && h.ba && g.h.SC(d, h.ba, "amap-markers") && c.push(h);
                    else {
                        if (l = h.get("params"), l.visible && h.ba)
                            if (l.shape)
                                for (k = k.va, s = l.lp % 360, u = [a[0], a[1]], s && (v = (a[0] -
                                        k[0]) / this.S, x = (a[1] - k[1]) / this.S, t = Math.PI * s / 180, s = Math.cos(-t), w = Math.sin(-t), t = v * s - x * w, v = v * w + x * s, u[0] = k[0] + t * this.S, u[1] = k[1] + v * this.S), m = h.width * this.S, n = h.height * this.S, p = l.offset.x * this.S, r = l.offset.y * this.S, m = g.I.NO([
                                        [u[0] - m - p, u[1] - n - r],
                                        [u[0] - p, u[1] - r]
                                    ]), k[0] instanceof Array || (k = [k]), n = k.length - 1; 0 <= n; n -= 1) { if (g.I.Nd(m, k[n])) { l.shape ? this.RC(h, u, k) && c.push(h) : c.push(h); break } } else g.h.SC(d, h.ba, "amap-markers") && c.push(h)
                    } else k.Nd ? k.Nd(a) && c.push(h) : k.Qx && 1.8 * k.Qx(a) <= h.get("strokeWeight") *
                        this.S && c.push(h);
                    this.jj ? c.sort(function(a, b) { return a.Jl > b.Jl ? -1 : 1 }) : c.sort(function(a, b) { return a.get("isTop") ? -1 : b.get("isTop") ? 1 : a.get("zIndex") > b.get("zIndex") || a.get("zIndex") === b.get("zIndex") && a.Jl > b.Jl ? -1 : 1 });
                    b(c, f)
                } else b([], f)
            }
        },
        RC: function(a, b, c) {
            var d = (b[0] - c[0][0]) / this.S;
            b = (b[1] - c[0][1]) / this.S;
            a = a.get("params");
            c = a.offset;
            var d = [d - c.x, b - c.y],
                e;
            a = a.shape;
            if ("circle" === a.B.type) { if (b = a.B.coords[0], c = a.B.coords[1], Math.sqrt((d[0] - b) * (d[0] - b) + (d[1] - c) * (d[1] - c)) <= a.B.coords[2]) return !0 } else {
                if ("poly" ===
                    a.B.type) return e = a.B.coords, e = this.nH(e), g.zd.Nd(d, e);
                if ("rect" === a.B.type) return e = a.B.coords, a = e[0], b = e[1], c = e[2], e = e[3], e = [
                    [a, b],
                    [c, b],
                    [c, e],
                    [a, e]
                ], g.zd.Nd(d, e)
            }
            return !1
        },
        nH: function(a) { for (var b = [], c = 0; c / 2 < a.length / 2; c += 2) b.push([a[c], a[c + 1]]); return b },
        P2: function(a, b, c, d, e, f, h) {
            var k = ["position:absolute;"];
            k.push("top:" + Math.round(c) + "px;");
            k.push("left:" + Math.round(b) + "px;");
            k.push("width:" + Math.round(d) + "px;");
            k.push("height:" + Math.round(e) + "px;");
            1 > f && ("opacity" in a.style ? (k.push("opacity"),
                k.push(":"), k.push(f), k.push(";")) : 8 <= document.documentMode ? (k.push("-ms-filter:'progid:DXImageTransform.Microsoft.Alpha(opacity="), k.push(Math.ceil(100 * f)), k.push(")';")) : (k.push("filter:alpha(opacity="), k.push(Math.ceil(100 * f)), k.push(");")));
            k.push("z-index:" + h + ";");
            k.join("");
            g.h.o7(a, k.join(""))
        }
    });
    g.N.Jb = g.aa.extend({
        ja: [g.sa, g.Pe],
        r: function(a) {
            this.e = a;
            this.type = "2D";
            this.ek = g.a.lc(a.get("zoom"), 1);
            this.rl = a.rl;
            this.J = a.Sa.o;
            this.W("display", a);
            this.W("rotateEnable", a);
            this.W("style", a);
            this.W("zoom", a);
            this.W("hightlight", a)
        },
        fS: function(a) { this.pe = a || g.a.Ek("ff" + this.e.pe.slice(1)) },
        wu: function(a, b, c, d, e) {
            function f(a, d) {
                a.length && (k[g.a.indexOf(b, d)] = a);
                l -= 1;
                0 >= l && (c(k), l = 0)
            }
            for (var h = b.length, k = [], l = 0, m, n = [], p = 0; p < h; p += 1) m = b[p], m instanceof g.o.$c && m.get("visible") && (n.push(this.yu(m)),
                l += 1);
            for (h = 0; h < n.length; h += 1) n[h].wu(a, f, d, e)
        }
    });
    g.K1 = {
        dI: function(a, b, c) {
            for (var d = null, e = null, f = 0, h = 0, k = 0, l = b.length; k < l; k++) {
                var m = b[k];
                if (m < a) d = c[m], f = m;
                else {
                    e = c[m];
                    h = m;
                    break
                }
            }
            null === d ? (d = e, f = h) : null === e && (e = d, h = f);
            return { Uy: f, gJ: h, ps: d, gD: e }
        },
        Fpa: function(a) {
            var b = this,
                c = g.a,
                d = [],
                e = {};
            c.Qb(a.nodes, function(a) {!1 !== a.value && null !== a.value && (e[a.zoom] = g.A.Bc + "://" + a.value, d.push(a.zoom)) });
            return function(a) {
                a = c.lc(a, 1);
                void 0 === e[a] && (e[a] = b.dI(a, d, e).ps);
                return e[a]
            }
        },
        lpa: function(a) {
            var b = this,
                c = g.a,
                d = [],
                e = {},
                f = a.transitional;
            c.Qb(a.nodes,
                function(a) { null !== a.value && !1 !== a.value && (e[a.zoom] = a.value, d.push(a.zoom)) });
            return function(a) {
                a = c.lc(a, 1);
                if (void 0 === e[a]) {
                    var k = b.dI(a, d, e);
                    e[a] = f && "none" !== f && k.gJ !== k.Uy && k.ps !== k.gD ? c.j3(k.ps, k.gD, (a - k.Uy) / (k.gJ - k.Uy), f) : k.ps
                }
                return e[a]
            }
        },
        xoa: function(a) {
            var b = this,
                c = g.a,
                d = [],
                e = {};
            c.Qb(a.nodes, function(a) { null !== a.value && (e[a.zoom] = a.value, d.push(a.zoom)) });
            return function(a) {
                a = c.lc(a, 1);
                void 0 === e[a] && (e[a] = b.dI(a, d, e).ps);
                return e[a]
            }
        },
        Foa: function(a, b, c) {
            var d = this,
                e = g.a,
                f = [],
                h = {},
                k =
                a.transitional;
            e.Qb(a.nodes, function(a) { a.value && (h[a.zoom] = e.Cka(a.value, c ? "rgba" : "webgl"), f.push(a.zoom)) });
            return function(a) {
                var b = null;
                a = e.lc(a, 1);
                if (void 0 === h[a]) {
                    var b = d.dI(a, f, h),
                        n = b.ps;
                    if (k && "none" !== k && b.Uy !== b.gJ && b.ps.join("") !== b.gD.join(""))
                        for (var n = n.slice(0), p = (a - b.Uy) / (b.gJ - b.Uy), q = 0, r = b.gD.length; q < r; q++) n[q] = e.j3(b.ps[q], b.gD[q], p, k);
                    h[a] = n
                }
                b = h[a];
                return c && b ? "rgba(" + b.join(",") + ")" : b || ""
            }
        },
        rJ: function(a, b, c, d) {
            var e = 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : {},
                f;
            for (f in c)
                if (c.hasOwnProperty(f)) {
                    var h = c[f];
                    void 0 !== b[h] ? (b[h].nodes && 1 < b[h].nodes.length && b[h].nodes.sort(function(a, b) { return a.zoom - b.zoom }), a[f] = e.Kqa ? { Ne: d.call(this, b[h], c[f]), canvas: d.call(this, b[h], c[f], !0) } : d.call(this, b[h], c[f])) : e.Jqa && (a[f] = !0)
                }
        },
        gr: function(a, b) {
            for (var c = [], d = 0, e = a.length; d < e; d += 2) {
                var f = 0,
                    f = "str" === b ? g.a.lc(parseInt(a.substr(d, 2), 16) / (0 === d ? 255 : 1), 3) : g.a.lc(parseInt(a.substr(d, 2), 16) / 255, 3);
                c.push(f)
            }
            return c.length ? (c.push(c.shift()), "str" === b ? "rgba(" + c.join(",") +
                ")" : c) : ""
        },
        a6: function(a, b, c) {
            if (b[c]) console.log("customType repeat!!", c);
            else {
                var d = {},
                    e = { visible: "visible", ET: "showLabel", dk: "showIcon" },
                    f = [
                        ["color", { color: "color" }, { opacity: "opacity" }],
                        ["fillColor", { fillColor: "fillColor" }, { ae: "fillOpacity" }],
                        ["strokeColor", { strokeColor: "strokeColor" }, { kb: "strokeOpacity" }],
                        ["textFillColor", { wwa: "textFillColor" }, { xwa: "textFillOpacity" }],
                        ["textStrokeColor", { zwa: "textStrokeColor" }, { Awa: "textStrokeOpacity" }],
                        ["backgroundColor", { backgroundColor: "backgroundColor" }, { Lka: "backgroundOpacity" }]
                    ];
                if (a.styles) {
                    a = a.styles;
                    this.rJ(d, a, e, this.xoa, { Jqa: !0 });
                    for (var e = 0, h = f.length; e < h; e++) {
                        var k = f[e];
                        a[k[0]] ? this.rJ(d, a, k[1], this.Foa, { Kqa: !0 }) : this.rJ(d, a, k[2], this.lpa)
                    }
                    a.texture && (this.rJ(d, a, { Ua: "texture" }, this.Fpa), d.kd = [], g.a.Qb(a.texture.nodes, function(a) { a.value && d.kd.push(g.A.Bc + "://" + a.value) }))
                } else {
                    for (h in e) e.hasOwnProperty(h) && (k = e[h], d[h] = void 0 === a[k] ? !0 : a[k]);
                    e = 0;
                    for (h = f.length; e < h; e++) {
                        var l = f[e],
                            k = g.a.keys(l[1])[0],
                            m = l[1][k],
                            n = g.a.keys(l[2])[0],
                            l = l[2][n];
                        void 0 !== a[m] ? d[k] = {
                            canvas: this.gr(a[m],
                                "str"),
                            Ne: this.gr(a[m])
                        } : d[n] = a[l]
                    }
                    a.texture && (d.Ua = g.A.Bc + "://" + a.texture)
                }
                b[c] = d
            }
        },
        vS: function(a, b, c, d) {
            if (a)
                for (var e in a)
                    if (a.hasOwnProperty(e) && g.a.Uj(a[e], "object")) {
                        var f = a[e],
                            h = e;
                        c && (h = c + ":" + e);
                        if (f.detailedType) this.a6(f, b, h), this.vS(f.detailedType, b, h, f);
                        else if (f.subType) this.vS(f.subType, b, h);
                        else {
                            if (void 0 !== f.code) {
                                for (var k in d) d.hasOwnProperty(k) && !g.a.ja(["isDetailed", "detailedType", "styles"], k) && void 0 === f[k] && void 0 !== d[k] && (f[k] = d[k]);
                                h = c + ":" + f.code
                            }
                            this.a6(f, b, h)
                        }
                    }
        },
        rU: function(a) {
            if (!this.Kx ||
                this.Kx.zoom != a) {
                var b = g.a.Eh,
                    c = { zoom: a },
                    d;
                for (d in this.ii)
                    if (this.ii.hasOwnProperty(d)) {
                        var e = this.ii[d];
                        c[d] = {};
                        for (var f in e)
                            if (e.hasOwnProperty(f)) {
                                var h = e[f];
                                h ? h.Ne ? (c[d][f] = {}, b(h.Ne) ? c[d][f].Ne = h.Ne(a) : c[d][f].Ne = h.Ne, b(h.canvas) ? c[d][f].canvas = h.canvas(a) : c[d][f].canvas = h.canvas) : b(h) ? c[d][f] = h(a) : c[d][f] = h : c[d][f] = h
                            }
                    }
                this.Kx = c
            }
        },
        styleChanged: function(a) {
            if (this.e.D.oi) {
                a = a || this.get("style");
                this.Pl.gA || (this.Pl = g.a.bind(this.Pl, this), this.Dp = g.a.bind(this.Dp, this), this.Pl.gA = !0);
                var b =
                    g.a,
                    c = {};
                this.vS(a, c);
                this.ii = c;
                a = this.ii["regions:land"];
                var c = this.ii.water,
                    d = this.ii.sky,
                    e = this.ii.buildings,
                    f, h, k, l, m, n = this.ek;
                if (a) {
                    var p = "rgba(0, 0, 0, 0)";
                    if (a.visible) {
                        var q = this.Dp(b.Y6(this.e.pe.substr(1)), a.opacity, a.color, !0, n);
                        q && (p = this.Dz(q, a.visible, "rgba(0, 0, 0, 0)"), q = this.Pl(b.us(this.e.pe.substr(1)), a.opacity, a.color, !0, n), f = this.Dz(q, a.visible))
                    }
                    this.e.eu = p
                } else this.e.eu = "";
                c && c.visible && (h = this.Pl(b.us(this.e.TG.substr(1)), c.opacity, c.color, !0, n), h = this.Dz(h, c.visible));
                d &&
                    d.visible && (k = this.Pl(b.us(this.e.tB.substr(1)), void 0, d.color, !0, n), k = this.Dz(k, d.visible));
                e && (e.visible ? (l = this.Pl(b.Ek(this.e.hF[0]), void 0, e.fillColor, !0, n), l = this.Dz(l, e.visible), m = this.Pl(b.Ek(this.e.hF[1]), void 0, e.strokeColor, !0, n), m = this.Dz(m, e.visible)) : (l = [1, 1, 1, 0], m = [1, 1, 1, 0]));
                this.fS && this.fS(f, h, k, [l, m]);
                this.P8 ? this.P8(this.ii) : this.set("display");
                delete this.Kx;
                this.rU(n)
            }
        },
        Dz: function(a, b) {
            var c = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : [0, 0, 0, 0],
                d = g.a.Eh;
            if (d(a) &&
                d(b)) {
                var e = a;
                a = function(a) { return b(a) ? e(a) : c }
            }
            return a
        },
        Dp: function(a, b, c, d, e) { if (a) { if (void 0 !== b) return a = a.split(","), c = b, "function" === typeof b && (c = b(e)), a[3] = g.a.lc(c, 3) + ")", a.join(","); if (c) return "function" === typeof c.canvas ? d ? c.canvas : c.canvas(e) : c.canvas } return a },
        Pl: function(a, b, c, d, e) { if (a) { if (b) return c = b, "function" === typeof b && (c = b(e)), [a[0], a[1], a[2], g.a.lc(c, 3)]; if (c) return "function" === typeof c.Ne ? d ? c.Ne : c.Ne(e) : c.Ne } return a },
        lI: function(a, b, c) {
            var d = this.ii;
            this.Kx && c && c == this.Kx.zoom &&
                (d = this.Kx);
            return b && (b = d[a + ":" + b]) ? b : d[a]
        },
        Nl: function(a, b, c, d, e) {
            var f = null,
                h = a;
            d = d ? this.Dp : this.Pl;
            e = e || this.ek;
            if (f = this.lI(b, void 0, e))
                if ("function" === typeof f.visible && !f.visible(e) || !1 === f.visible) h = "";
                else {
                    var h = 1,
                        k = "";
                    if (c)
                        if (f.fillColor || f.ae) h = f.ae, k = f.fillColor;
                        else { if (f.color || f.opacity) h = f.opacity, k = f.color }
                    else if (f.strokeColor || f.kb) h = f.kb, k = f.strokeColor;
                    else if (f.color || f.opacity) h = f.opacity, k = f.color;
                    h = d(a, h, k, !1, e)
                }
            this.Or === b && (h = this.xu(h || a));
            return h
        },
        Jr: function(a, b, c, d) {
            c =
                c ? this.Dp : this.Pl;
            var e = null,
                f = a;
            d = d || this.ek;
            (e = this.lI(b, void 0, d)) && (f = "function" === typeof e.visible && !e.visible(d) || !1 === e.visible ? "" : c(a, e.opacity, e.color, !1, d));
            this.Or === b && (f = this.xu(f || a));
            return f
        },
        ay: function(a, b, c, d, e, f) {
            var h = a,
                k = b,
                l = c,
                m = !0,
                n = !0,
                p = 1;
            f = f || this.ek;
            var q = this.lI(d, e, f);
            q && ("function" === typeof q.visible && !q.visible(f) || !1 === q.visible || "function" === typeof q.ET && !q.ET(f) || !1 === q.ET ? (n = m = !1, h = k = l = "") : (h = this.Dp(a, q.xwa, q.wwa, !1, f), k = this.Dp(b, q.Awa, q.zwa, !1, f), l = this.Dp(c, q.Lka,
                q.backgroundColor, !1, f), m = "function" === typeof q.dk ? q.dk(f) : q.dk));
            f = !1;
            this.Or === d ? f = !0 : void 0 !== e && this.Or === d + "-" + e && (f = !0);
            f && (h = this.xu(h || a), k = this.xu(k || b), l = this.xu(l || c), p = 1 - 1.6 * this.KC, n = m = !0);
            return [h, k, l, m, n, p]
        },
        $x: function(a, b, c, d, e) {
            var f = null,
                h = a,
                k = b;
            d = d ? this.Dp : this.Pl;
            var l = e || this.ek;
            if (f = this.lI(c, void 0, e)) "function" === typeof f.visible && !f.visible(l) || !1 === f.visible ? h = k = "" : (h = d(a, f.ae, f.fillColor, !1, l), k = d(b, f.kb, f.strokeColor, !1, l));
            this.Or === c && (b = k || b, h = this.xu(h || a), k = this.xu(b));
            return [h, k]
        }
    };
    g.N.Jb.zb(g.K1);
    g.N.canvas.Jb = g.N.Jb.extend({
        r: function(a) { arguments.callee.ka.apply(this, arguments) },
        yu: function(a) {
            if (!a.N) {
                var b = a.Dl(this);
                b && !b.Bma && (a.N = b)
            }
            return a.N
        },
        fc: function(a) {
            var b = this.e.y2();
            b && this.RS !== b && this.e.D.oi && (this.e.n7(b), this.RS = b);
            this.e.Sa.lr.style.cssText = "";
            var c = a.ra,
                b = a.R,
                d = this.e.D.get("features"),
                e = a.size.width,
                f = a.size.height;
            this.ek = "vw" === this.e.D.He.baseRender ? g.a.lc(b.zoom, 1) : a.R.ze;
            this.S = b.S;
            if (!this.Ka || 1E4 < Math.abs(b.nb.x - this.Ka.x) / this.S || 1E4 < Math.abs(b.nb.y - this.Ka.y) /
                this.S) this.Ka = b.nb;
            this.Ka.x - b.nb.x < -g.a.Da / 2 ? this.Ka = new g.H(this.Ka.x + g.a.Da, this.Ka.y) : this.Ka.x - b.nb.x > g.a.Da / 2 && (this.Ka = new g.H(this.Ka.x - g.a.Da, this.Ka.y));
            for (var h = 0; h < c.length; h += 1) {
                var k = c[h],
                    l = this.yu(k),
                    m = c[h].te();
                if (l && l.j)
                    if (!m.visible || k.hD || m.lb[0] > b.zoom || m.lb[1] < b.zoom || k.ga && 0 === k.ga.length) {
                        if (l = l.gj())
                            if (l.length)
                                for (m = 0; m < l.length; m += 1) l[m].parentNode === this.J && this.J.removeChild(l[m]);
                            else l.parentNode === this.J && this.J.removeChild(l)
                    } else if (this.AR(k, d)) {
                    l.fc(a, m);
                    l.bn &&
                        (a.Pf = l.Pf);
                    var k = l.gj(),
                        n, p, q = l.transform;
                    if (!q || !k || l.Ig && !this.e.D.La) c[h].Ok && k.parentNode !== this.J && (this.J.appendChild(k), c[h].Kb = k);
                    else {
                        c[h].Kb = k;
                        k.length || (k = [k], q = [q]);
                        for (var r = 0; r < k.length; r += 1)
                            if (n = k[r], p = q[r], !p.ly) {
                                var s = p.translate.x,
                                    u = p.translate.y;
                                c[h].KI || (s = g.a.lc(s, 2), u = g.a.lc(u, 2));
                                var v = p.scale;
                                1E-5 > Math.abs(s) && (s = 0);
                                1E-5 > Math.abs(u) && (u = 0);
                                var x = [];
                                x.push("position:absolute");
                                x.push("z-index:" + (p.nk || c[h].get("zIndex")));
                                c[h].lC ? (x.push("top:" + Math.floor(f / 2 + u) + "px"), x.push("left:" +
                                    Math.floor(e / 2 + s) + "px")) : n.q4 ? (x.push("height:" + n.height * v + "px"), x.push("width:" + n.width * v + "px"), x.push("top:" + (f / 2 - u * v) + "px"), x.push("left:" + (e / 2 - s * v) + "px")) : (1 !== v && (x.push(g.h.Fs[g.h.dg] + "-origin:" + s + "px " + u + "px"), x.push(g.h.Fs[g.h.dg] + ":scale3d(" + v + "," + v + ",1)")), x.push("top:" + Math.floor(f / 2 - u) + "px"), x.push("left:" + Math.floor(e / 2 - s) + "px"), l.lj && (x.push("height:" + n.height + "px"), x.push("width:" + n.width + "px")));
                                l.KI || 1 === m.opacity || "number" !== typeof m.opacity || x.push(g.h.V2(n, m.opacity));
                                n.parentNode !==
                                    this.J && this.J.appendChild(n);
                                g.h.o7(n, x.join(";"))
                            }
                    }
                }
            }
            a = this.e.Sa.lr;
            k = this.e.Sa.o;
            c = this.e.Sa.w;
            g.h.dg && "number" === typeof b.rotation && 0 !== b.rotation ? (a.style[g.h.dg + "Origin"] = e / 2 + "px " + f / 2 + "px", a.style[g.h.dg] = "rotate(" + b.rotation + "deg)", a.style.overflow = "visible", k.style.overflow = "visible", c.style.overflow = "visible") : (a.style.cssText = "", k.style.cssText = "-webkit-transform: translateZ(0);", c.style.cssText = "");
            this.e.uv = !1
        },
        AR: function(a, b) {
            if ("all" === b || void 0 === a.Al) return !0;
            for (var c = 0, d = a.Al.length; c <
                d; c++)
                if (g.a.ja(b, "region" === a.Al[c] ? "bg" : a.Al[c])) return !0;
            return !1
        },
        zoomChanged: function() {
            var a = this.e.get("zoom");
            this.ek = "vw" === this.e.D.He.baseRender ? g.a.lc(a, 1) : Math.round(a);
            this.ii && this.rU(this.ek)
        }
    });
    g.N.Fi = g.N.ac.extend({
        r: function(a, b) {
            arguments.callee.ka.apply(this, arguments);
            this.W("reload", a, !0);
            var c = a.V.get("cacheSize");
            if (this.e && this.e.D) {
                var d = this.e.D.get("tileCacheSize");
                d && 0 < d && (c = d)
            }
            this.ta = new g.cg(c);
            var e = this;
            this.ta.mJ.w0(function(a) { e.rA(a) });
            this.ta.MB = function(a) { return a.Rb ? (a.Rb.Vi -= 1, 0 == a.Rb.Vi && (a.Pu = !1), delete a.Rb, !0) : a.Pu ? a.Vi ? !1 : !0 : !0 };
            this.ad = 1;
            this.zn = 50;
            this.eW = !0;
            this.j.ta = this.ta;
            this.Vl = new g.HE(6, null, a.TP);
            new g.HE(5, null, a.TP)
        },
        bv: function() {
            this.clear();
            this.Tg = null;
            this.ta.clear();
            this.ta.MB = null;
            this.ta = this.ta.mJ.cF = null;
            this.Cc && (this.Cc.G("tiles", this.nD, this), this.Cc.G("ack", this.mD, this), this.Cc.G("disable", this.kD, this), this.Cc = null);
            this.lj && g.F.G(this.Qa, "webglcontextlost", this.jD, this);
            this.e.G("zoomend", this.Nj, this);
            this.e.G("moveend", this.Nj, this)
        },
        reloadChanged: function() {
            this.j && (this.j.La = !1);
            this.ta.clear();
            this.reload = !0;
            this.set("display")
        },
        kh: function(a, b, c) {
            function d(b) {
                a.loaded = !0;
                e.j && (a.status = "loaded", a.wa = !0, a.ff = b, e.set("display",
                    0), "function" === typeof c && c())
            }
            var e = this;
            a.status = "loading";
            this.j.Xn && this.j.Xn.call(this, a, d, function() {
                a.loaded = !0;
                e.j && (a.status = "loaded", a.wa = !0, "function" === typeof c && c())
            })
        },
        UFa: function(a, b, c, d) {
            var e = [];
            c = c || 18;
            b = Math.pow(2, b - c);
            for (var f = 0; f < a.length; f += 1) {
                var h = a[f].qa,
                    k = Math.floor(h.x / b),
                    h = Math.floor(h.y / b);
                if (d) { if (k = c + "/" + k + "/" + h, (h = this.ta.get(k)) && "loaded" == h.status) continue } else h = new g.Cq(c, k, h), k = h + "", h = new g.ob(h);
                !e[k] && h && (e.push(h), e[k] = 1)
            }
            return e
        },
        RH: function(a, b) {
            var c =
                this,
                d = this;
            if (this.j.EG) {
                var e, f, h, k, l, m, n, p = function() {
                    var p = 0;
                    for (e = a.length - 1; 0 <= e; e -= 1) f = a[e], p += f.length;
                    if (0 == p) return b.call(c, a), { wK: void 0 };
                    d.YT = a;
                    for (e = a.length - 1; 0 <= e; e -= 1)
                        for (f = a[e], h = [], k = [], f.SS = h, f.$u = k, l = f.length - 1; 0 <= l; l -= 1) m = f[l], n = m.qa, c.j.e.th.mz(n.x, n.y, n.z, function() {
                            var c = l;
                            return function(e) {
                                e ? h.push(f[c]) : k.push(f[c]);
                                p -= 1;
                                if (0 == p) {
                                    for (e = a.length - 1; 0 <= e; e -= 1) {
                                        var l = a[e];
                                        a[e] = l.SS;
                                        if (l.$u)
                                            for (var m = l.$u.length - 1; 0 <= m; m -= 1) {
                                                var n = l.$u[m];
                                                n.status = "loaded";
                                                n.loaded = !0;
                                                n.wa = !0
                                            }
                                    }
                                    b.call(d, a)
                                }
                            }
                        }())
                }();
                if ("object" === typeof p) return p.wK
            } else b.call(this, a)
        },
        Gv: function(a, b, c) {
            if (a = this.ta.get(a + "/" + b + "/" + c)) {
                if (a.Pu) return a;
                if (a.Rb) return a.Rb;
                a.Pu = !0;
                a.Vi = 0;
                return a
            }
        },
        nI: function(a) {
            var b = a.qa;
            a = b.x;
            var c = b.y,
                b = b.z,
                d = Math.pow(2, b),
                e = (a + d) % d,
                f = e + d,
                d = e - d,
                h = null;
            e !== a && (h = this.Gv(b, e, c));
            h || d === a || (h = this.Gv(b, d, c));
            h || f === a || (h = this.Gv(b, f, c));
            return h
        },
        gn: function(a) {
            var b = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : !1;
            if (a.length)
                if (this.JJ) this.eJ = !0;
                else {
                    for (var c =
                            a.length - 1; 0 <= c; c -= 1) {
                        var d = a[c];
                        if (d.length)
                            for (var e = Math.pow(2, 20 - d[0].qa.z), c = d.length - 1; 0 <= c; c--) {
                                var f = d[c],
                                    h = f.qa;
                                h.S = e;
                                f.xa = {};
                                f.Tm = 0;
                                if (10 > h.z) {
                                    var k = this.nI(f);
                                    k && (f.Rb = k, f.status = "loaded", f.wa = !0, k.Vi += 1, f.Tm = (h.x - k.qa.x) / Math.pow(2, h.z), d.splice(c, 1), this.set("display", 0))
                                }
                                this.ta.set(f.key, f);
                                !b && f.we ? f.we = !1 : f.status = "loading"
                            }
                    }
                    var l = this;
                    this.RH(a, function(a) {
                        for (var c = a.length - 1; 0 <= c; c -= 1) {
                            var d = a[c];
                            if (d.length)
                                if (l.pi) {
                                    if (l.e.tz) break;
                                    var e = d[0].qa.z;
                                    l.vv(d, l.lj ? 1 : 0);
                                    for (var f = 0,
                                            k = 0; f < d.length;) l.RR(d.slice(50 * k, 50 * k + 50), e, b), f += 50, k += 1
                                } else
                                    for (e = function() {
                                            var a = d.length;
                                            return function() {
                                                if (0 === --a) {
                                                    var b = { key: "rb", index: 0, id: l.e.D.id };
                                                    l.j.V.$j || (g.oe.Ze.end(b), g.oe.Ze.end(g.extend(b, { index: 1 })))
                                                }
                                            }
                                        }(), l.vv(d), l.Op += d.length, f = d.length - 1; 0 <= f; f -= 1) l.kh(d[f], l.Vl, e)
                        }
                    })
                }
        },
        fy: function(a, b) {
            var c = this.ta.get(a + "");
            c || b || (c = new g.ob(a.jb()));
            return c
        },
        bK: function(a, b) { return this.xd * Math.pow(2, a - b) },
        rA: function(a) {
            a.Ur && this.Vl.f1(a.Ur);
            a.OJ = !1;
            a.loaded = !1;
            this.Nf && this.Nf(a)
        },
        Ex: function(a, b) {
            var c = (2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : 0) || this.bb,
                d = a.Fd.x,
                e = a.Fd.y,
                f = a.Xb.x,
                h = a.Xb.y;
            new g.H(0, 0);
            var k = this.bK(20, c);
            b && (f = Math.max(b[0], f) - b[0], h = Math.max(b[1], h) - b[1], d = Math.min(b[2], d) - b[0], e = Math.min(b[3], e) - b[1], new g.H(Math.floor(b[0] / k), Math.floor(b[1] / k)));
            d /= k;
            e /= k;
            d = { Hc: 0 === d % 1 ? d - 1 : Math.floor(d), vc: 0 === e % 1 ? e - 1 : Math.floor(e), Jc: Math.floor(f / k), dc: Math.floor(h / k) };
            d.CD = d.Hc - d.Jc + 1;
            d.AJ = d.vc - d.dc + 1;
            d.z = c;
            d.S = this.S * Math.pow(2, this.zoom - c);
            d.hy = Math.ceil(d.CD /
                2);
            return d
        },
        Ju: function(a, b, c) { return b < a.Jc || b > a.Hc || c < a.dc || c > a.vc ? !1 : !0 },
        vv: function(a, b) {
            if (a.length) {
                var c = this.nb.dd(this.xd << 20 - a[0].qa.z),
                    d = Math.floor(c.x),
                    e = Math.floor(c.y);
                a.sort(function(a, c) {
                    var k = a.qa,
                        l = c.qa,
                        m = k.x - d,
                        k = k.y - e,
                        n = l.x - d,
                        l = l.y - e;
                    return (b ? -1 : 1) * (n * n + l * l - (m * m + k * k))
                })
            }
        },
        clear: function() { this.Vl.clear() },
        Do: function(a, b) {
            this.hg = !1;
            this.clear();
            this.Li = b.Li;
            this.Ki = b.Ki;
            this.xd = b.xd;
            var c = a.R;
            this.xf = b.xf || a.R.xf;
            this.eh = c.eh;
            this.size = a.size;
            this.rotation = c.rotation;
            this.nb =
                c.nb;
            this.Ha = a.R.Ha;
            this.Ef = a.Ef;
            this.Ye = a.Ye;
            this.Lg = a.Lg;
            this.zoom = c.zoom;
            this.ze = c.ze;
            this.bb = !1 === this.pi && !this.j.kR && this.j.ia ? this.ze + 1 : this.ze;
            this.Ve && this.bb > this.Ve && (this.bb = this.Ve);
            this.wo && this.bb < this.wo && (this.bb = this.wo);
            this.S = c.S;
            this.rg = c.rg;
            c = a.R.Ha;
            this.Xj = this.Ex(c, b.I);
            this.Vv = c.m9 ? this.Ex(c.m9, b.I) : null;
            var c = this.Xj,
                d = this.Ha.b8,
                e = null,
                e = d < this.zoom && this.Vv ? this.Vv : c,
                f = [],
                h = [],
                k, l = [],
                m = [],
                n = [],
                p = new g.Cq(0, 0, 0),
                q, r = this.zoom,
                m = this.pl || "",
                s = {},
                u = {},
                v, x, t, w, y, D;
            this.Yd =
                1E6 * Math.random() << 0;
            for (q = m.length - 1; 0 <= q; q -= 1)
                if (k = m[q], !(k.yw < b.opacity))
                    if (p.z = k.qa.z, p.x = k.qa.x, p.y = k.qa.y, p.z === this.bb) s[p + ""] |= 16;
                    else if (p.z < this.bb) {
                if (s[p + ""] |= 64, this.Li)
                    for (w = this.bb - p.z, v = Math.max(c.Jc, p.x << w), r = Math.min(c.Hc, (p.x + 1 << w) - 1), x = Math.max(c.dc, p.y << w), t = Math.min(c.vc, (p.y + 1 << w) - 1), p.z = this.bb, w = v; w <= r; w += 1)
                        for (p.x = w, y = x; y <= t; y += 1) p.y = y, D = p + "", s[D] |= 32, u[D] = u[D] ? Math.max(k.qa.z, u[D]) : k.qa.z
            } else if (this.Ki)
                for (v = 1; p.z >= this.bb;) {
                    s[p + ""] |= v;
                    v = p.x >> 1;
                    x = p.y >> 1;
                    r = v << 1;
                    t = x << 1;
                    k = 0;
                    for (w = 2; 0 < w; w -= 1)
                        for (p.x = r + w, y = 2; 0 < y; y -= 1) p.y = t + y, s[p + ""] & 5 && (k += 1);
                    p.z -= 1;
                    p.x = v;
                    p.y = x;
                    v = 4 === k ? 4 : 2
                }
            m = [];
            p.z = this.bb;
            q = !0;
            this.ta.r1();
            for (w = e.Jc; w <= e.Hc; w += 1)
                for (p.x = w, y = e.dc; y <= e.vc; y += 1) p.y = y, k = this.fy(p), this.st(k), v = !1, k.wa ? (k.Yd = this.Yd, this.Ju(c, w, y) && (m.push(k), this.qk && (k.ad !== this.ad || 1 > k.yw) && (v = !0))) : (q = !1, this.Ju(c, w, y) && (v = !0), k.status && !k.we || this.ze !== d || this.Vv && !this.Ju(this.Vv, w, y) || l.push(k)), v && n.push(k);
            q ? (this.uC || (this.uC = !0), this.j.La || (k = {
                key: this.j.Ig ? "rl" : "rb",
                index: 1,
                id: this.e.D.id
            }, this.j.V.$j || (g.oe.Ze.end(k), g.oe.Ze.push({ key: "ftc", qf: m.length, id: this.e.D.id })))) : this.j.La = !1;
            this.hg = q;
            m.length && this.uC && (f.push(m), m.hg = q);
            h.push(l);
            d = !1;
            if (this.Ki) {
                n = n.slice(0);
                e = [];
                for (q = n.length - 1; 0 <= q; q -= 1) k = n[q], s[k.key] & 4 || e.push(k);
                k = b.lb[1];
                for (r = this.bb + 1; n.length && r <= k; r += 1) {
                    m = [];
                    l = n;
                    n = [];
                    p.z = r;
                    for (q = l.length - 1; 0 <= q; q -= 1)
                        if (w = l[q], v = s[w.key], v & 7)
                            for (v = w.qa.x << 1, x = w.qa.y << 1, w = 1; 0 <= w; w -= 1)
                                for (p.x = v + w, y = 1; 0 <= y; y -= 1) p.y = x + y, D = p + "", t = this.ta.tJ(D), s[D] & 5 && t && t.wa ? (t.XA = !0, t.Yd = this.Yd, m.push(t), this.st(t)) : n.push(new g.ob(p.jb()));
                    m.length && (d = !0, f.push(m))
                }
                n = e
            }
            if (!d && this.Li)
                for (w = !f.length || this.lj ? b.lb[0] : Math.max(b.lb[0], this.bb - 2), Math.max(w, this.bb - this.xfa), r = this.bb - 1; n.length && r >= w; r -= 1) {
                    m = [];
                    y = {};
                    l = n;
                    n = [];
                    for (q = l.length - 1; 0 <= q; q -= 1) k = l[q], p.z = r, p.x = k.qa.x >> 1, p.y = k.qa.y >> 1, k = this.fy(p), y[k.key] || (y[k.key] = 1, v = !1, k.wa && (!this.zha || s[k.key] & 64) ? (p.x = Math.min(c.Hc, Math.max(c.Jc, p.x << this.bb - r)), p.y = Math.min(c.vc, Math.max(c.dc, p.y << this.bb - r)), p.z = this.bb,
                        D = p + "", "number" === typeof u[D] && k.qa.z > u[D] ? v = !0 : k.XA = !0, k.Yd = this.Yd, m.push(k), this.st(k)) : v = !0, v && n.push(k));
                    m.length && f.push(m)
                }
            this.YT = h;
            this.Vu = this.Op = 0;
            this.gn(h);
            this.Tg = f;
            this.j.set("tiles", f);
            this.hv(a, b)
        },
        st: function(a) { this.ta.Y4(a.yDa) },
        IQ: function(a, b) {
            for (var c = [], d = this.e.D.getCoordsBoundByZoom(a), d = this.Ex(d, b, a), e = d.Jc; e < d.Hc; e++)
                for (var f = d.dc; f < d.vc; f++) {
                    var h = [a, e, f].join("/");
                    this.ta.Wc(h) || c.push(new g.ob(new g.Cq(a, e, f), !0))
                }
            return c
        },
        LL: function() {
            var a = this.e.D;
            return a.u6 &&
                a.get("preloadMode") && 200 <= this.ta.bp && this.j.V.Nu() && "stable" != this.Ef && this.nx && this.nx() && this.zoom !== this.bb
        },
        hv: function(a, b) {
            var c = b.I,
                d = b.lb;
            if (this.LL() && this.bb >= d[0] + 1) {
                var d = [],
                    e = null,
                    e = "zoomOut" === this.Ef ? Math.floor(this.zoom) : Math.ceil(this.zoom),
                    e = this.IQ(e, c);
                e.length && d.push(e);
                d.length && this.gn(d, !0)
            }
        }
    });
    g.N.Wd.Fi = g.N.Fi.extend({
        r: function(a, b) {
            arguments.callee.ka.apply(this, arguments);
            this.zn = 120;
            this.pi = !1;
            this.Fg();
            this.Ve = a.Ve;
            this.wo = a.wo
        },
        gj: function() { return this.Kb },
        Fg: function() {
            this.Kb = document.createElement("div");
            this.Kb.className = this.j.V.get("className") || "amap-layer";
            this.su = document.createDocumentFragment()
        },
        mv: function(a) {
            var b = Math.pow(2, a.R.zoom - this.mf),
                c = a.R.nb.$a(this.Wr).dd(this.am);
            this.transform = { translate: this.transform.translate.add(c), scale: b, rotate: 0 };
            this.nb = a.R.nb
        },
        LO: function(a, b) {
            this.Ka = this.K.Ka;
            this.mf = this.ze;
            this.am = this.rg;
            this.je = !1;
            this.currentTime = +new Date;
            this.yU = b.yU;
            var c = this.Xj;
            this.qk = this.zn && b.hH;
            var d = this.Tg,
                e = 256 * c.CD,
                c = 256 * c.AJ;
            this.Ye = this.zoom << 0 !== this.zoom;
            var f = this.nb.$a(this.Ka);
            f.x < -g.a.Da / 2 ? f.x += g.a.Da : f.x > g.a.Da / 2 && (f.x -= g.a.Da);
            this.$O = f.dd(this.rg);
            return [d, e, c, b]
        },
        Xy: function(a, b) {
            var c = this.LO(a, b);
            this.ss.apply(this, c);
            this.Ee(a);
            this.hg && !this.j.La && (c = this.j, c.V.$j || g.oe.Ze.end({ key: "rb", index: 2, id: this.e.D.id }), c.La = !0, c.Cd ? c.ma("renderComplete") : (c.Cd = !0, c.ma("complete")))
        },
        fc: function(a, b) {
            this.Ts = a.Ts;
            this.Lg = a.Lg;
            this.Do(a, b);
            this.Wr && g.l.Bl && (a.Ye || a.Lg) ? this.mv(a, b) : this.Xy(a, b);
            this.Wr = this.nb;
            this.je && this.set("display", 0)
        },
        lv: function() { for (var a = this.Kb.childNodes, b = a.length - 1; 0 <= b; b -= 1) a[b] && a[b].ad !== this.ad && this.Kb.removeChild(a[b]) },
        BD: function(a, b) { return a.dc === b.dc && a.Jc === b.Jc && a.vc === b.vc && a.Hc === b.Hc },
        ss: function(a) {
            var b = this.ad;
            this.ad += 1;
            var c = !1,
                d, e, f;
            e = !1;
            var h = [],
                k, l;
            for (d = a.length -
                1; 0 <= d; d -= 1)
                if (f = a[d], f.length) {
                    e = f[0].qa.z;
                    var m, n, p = this.bK(this.ze, e),
                        q = !1;
                    this.bn && f.hg && f[0].qa.z == this.bb && (k = [], l = [], q = !0);
                    for (var r = f.length - 1; 0 <= r; r -= 1) {
                        n = f[r];
                        q && n.ga && (k.push.apply(k, n.ga), l.push(n.qa + ""));
                        this.hT(n);
                        if (this.Ka === n.Ka && n.mf === this.mf) {
                            var s = n.ff;
                            if (s && s.parentNode === this.Kb && 1 === n.yw) {
                                h.push(n);
                                s.ad = this.ad;
                                n.ad = this.ad;
                                continue
                            }
                        }
                        n.Ka = this.Ka;
                        n.mf = this.mf;
                        m = n.qa;
                        var c = !0,
                            u = (new g.H((m.x << 20 - e) * this.xd, (m.y << 20 - e) * this.xd)).$a(this.Ka),
                            u = u.dd(this.rg);
                        u.x = g.a.lc(u.x, 1);
                        u.y = g.a.lc(u.y, 1);
                        var v = 1;
                        if (!n.bX || this.eW && n.ad !== b) n.bX = this.currentTime;
                        this.qk && !n.XA ? (s = Math.max(0, Math.abs(m.z - this.zoom) - 1), v = Math.min(1, (this.currentTime - n.bX) / (1 / Math.pow(1.32, s) * this.zn)), 1 !== v && (this.je = !0)) : n.XA = !1;
                        n.ad = this.ad;
                        n.yw = v;
                        n.wa ? (s = n.ff, !s && n.Rb && n.Rb.ff && (s = n.Rb.ff), 0 !== v && s && (this.P2(s, u.x, u.y, p, p, v, m.z), s.parentNode !== this.Kb && (g.l.mi && "overlayer" === this.j.get("type") && (s.style.display = "none"), this.su.appendChild(s)), s.ad = this.ad, n.ze = this.ze, h.push(n))) : n.Yd = null
                    }
                    e = !0
                }
            this.bn &&
                k && (r = l.sort().join(";"), k.FR = r, r !== this.Pf.FR && (this.Pf = k));
            1 < a.length && (this.je = !0);
            this.pl = h;
            this.lv();
            this.Kb.appendChild(this.su);
            return c || !e
        },
        hT: function() {},
        Ee: function() { this.transform = { translate: this.$O, scale: Math.pow(2, this.zoom - this.ze), rotate: 0 } }
    });
    window.CanvasRenderingContext2D && (window.CanvasRenderingContext2D.prototype.zP = function(a, b, c, d, e) {
        "undefined" === typeof e && (e = [10, 10]);
        this.moveTo(a, b);
        var f = c - a,
            h = d - b,
            k = Math.floor(Math.sqrt(f * f + h * h));
        d = f / k;
        c = h / k;
        e.pg = 0;
        for (var l = [], f = this.yH, m = 0, n = 0, p = !1, q = h = 0; q < e.length; q += 1) e.pg += e[q], l[q] = { qC: e[q] * d, rC: e[q] * c, ty: h += e[q] }, f -= e[q], 0 > f && !p && (m = q, n = -f, p = !0);
        for (p = 0; n + p <= k;) n < e[m] ? (f = n * d, h = n * c) : (f = l[m].qC, h = l[m].rC), a += f, b += h, this.TD ? this.moveTo(a, b) : this.lineTo(a, b), p += n, this.TD = !this.TD, n = e[(m + 1) %
            e.length], m = (m + 1) % e.length;
        k -= p;
        a += k * d;
        b += k * c;
        this.TD ? this.moveTo(a, b) : this.lineTo(a, b);
        this.yH = (this.yH + p + k) % e.pg
    }, window.CanvasRenderingContext2D.prototype.Oma = function(a, b, c, d) {
        "undefined" === typeof d && (d = [10, 10]);
        var e = 2 * Math.PI * c,
            f = 0 >= d ? e : Math.round(e / (d[0] + d[1])),
            h = (d[0] + d[1]) / e * 2 * Math.PI;
        d = d[0] / e * 2 * Math.PI;
        for (e = 0; e < f; e += 1) this.beginPath(), this.arc(a, b, c, e * h, e * h + d), this.stroke()
    });
    g.N.ye.ll = g.N.Fi.extend({
        r: function(a, b) {
            arguments.callee.ka.apply(this, arguments);
            this.Fg()
        },
        MQ: function() { return this.Xa.PT },
        gj: function() { return this.Kb },
        Fg: function() {
            this.Kb = document.createElement("div");
            this.Kb.className = "amap-markers";
            this.Xa = new g.N.ye.$c(this.Kb);
            this.Xa.j = this.j;
            this.K.J.appendChild(this.Kb)
        },
        Ms: function(a, b) {
            this.su = b.su;
            this.vy = b;
            this.xf = a.R.xf;
            this.S = a.R.S;
            this.zoom = a.R.zoom;
            this.size = a.size;
            this.Ha = a.R.Ha;
            this.Rp = a.S;
            this.ib = a.R.nb;
            this.eh = a.R.eh;
            var c = !1;
            if (!this.Ka ||
                500 < Math.abs(this.ib.x - this.Ka.x) / this.S || 500 < Math.abs(this.ib.y - this.Ka.y) / this.S) c = !0;
            if (c || this.zoom << 0 !== this.zoom || this.mf !== this.zoom) this.Ka = this.ib, this.mf = this.zoom
        },
        Bu: function(a) {
            var b = a.R.Ha.tc.y * this.S;
            a = a.R.Ha.tc.x * this.S;
            return [this.ib.x - a, this.ib.y - b, this.ib.x + a, this.ib.y + b]
        },
        lv: function() {
            if (this.Ih && this.Ih)
                for (var a in this.Ih)
                    if (this.Ih.hasOwnProperty(a)) {
                        var b = this.Ih[a];
                        b.Yd !== this.Yd && b.ba && this.K.rl.appendChild(b.ba)
                    }
        },
        fc: function(a, b) {
            this.Yd = 1E6 * Math.random() << 0;
            this.Ms(a,
                b);
            this.R = a.R;
            this.size = a.size;
            var c = this.j;
            this.xd = 256;
            var d, e;
            e = this.Bu(a);
            var f = 0;
            c.Rl && (f = 50 * this.S);
            e[0] -= this.j.lf * this.S + f;
            e[1] -= this.j.Xf * this.S + f;
            e[2] += this.j.lf * this.S + f;
            e[3] += this.j.Xf * this.S + f;
            c = c.Ym(e);
            for (d in c) c.hasOwnProperty(d) && (c[d].Yd = this.Yd, c[d].K4 = this);
            this.lv(c);
            this.Ms.call(this.Xa, a, b);
            this.Xa.ID(c);
            this.Ih = c;
            this.Ee(a)
        },
        Ee: function() {
            var a = Math.pow(2, this.zoom - this.ze);
            this.transform = { translate: this.Ka.$a(this.ib).dd(this.S), scale: a, rotate: 0 }
        }
    });
    g.N.ye.$c = g.aa.extend({
        r: function(a) { this.Wk = a },
        ID: function(a, b) {
            var c = document.createDocumentFragment(),
                d = b && b.wR ? null : {},
                e = !0,
                f;
            for (f in a)
                if (a.hasOwnProperty(f)) {
                    var h = a[f],
                        k, l = h.get("params");
                    if (h.ba) k = h.ba;
                    else {
                        k = g.h.create("div");
                        k.className = "amap-marker";
                        var m = l.Bg,
                            n = l.z7,
                            p = l.NI;
                        m && k.appendChild(m);
                        n && k.appendChild(n);
                        p && !1 !== m.xL && k.appendChild(p);
                        h.ba = k;
                        h.Bg = m;
                        if (n = l.title) m.title = n;
                        this.j.Rl = !0; - 1 === g.a.indexOf(this.j.Ng, h) && this.j.Ng.push(h);
                        h.Vd = !0
                    }
                    var p = l.offset,
                        q = p.x,
                        r = p.y,
                        s = l.textAlign,
                        u = l.verticalAlign,
                        n = l.anchor,
                        m = !1,
                        v, x;
                    n && (n = n.split("-"), 2 === n.length ? (s = n[1], u = n[0]) : 1 === n.length && "center" === n[0] && (s = "center", u = "middle"));
                    var t, n = t = 0;
                    if ("AMap.Text" == h.np || "AMap.Marker" == h.np) {
                        if (x = v = 0, k.parentNode !== this.Wk && d && (m = !0, d[f] = h, e = !1), !m) {
                            h.Vd || !h.Hj ? (t = g.h.eo(h.Bg), h.Hj = t) : t = h.Hj;
                            n = t[0];
                            t = t[1];
                            switch (s) {
                                case "center":
                                    v = n / 2;
                                    break;
                                case "right":
                                    v = n
                            }
                            switch (u) {
                                case "middle":
                                    x = t / 2;
                                    break;
                                case "bottom":
                                    x = t
                            }
                            q -= v;
                            r -= x
                        }
                    } else v = -q, x = -r;
                    var w, y;
                    if (!m)
                        if (h.Vd) {
                            var D = [];
                            w = this.bu(h.da.va);
                            h.Ka =
                                this.Ka;
                            y = l.xE;
                            r = Math.round(w[1] + r + y.y);
                            q = Math.round(w[0] + q + y.x);
                            D.push("top:" + r + "px");
                            D.push("left:" + q + "px");
                            D.push("z-index:" + (l.w4 ? this.j.rq + 10 : l.zIndex));
                            if (!g.l.ue) {
                                r = v;
                                q = x;
                                if ("AMap.Marker" == h.np) {
                                    r = -p.x;
                                    q = -p.y;
                                    switch (s) {
                                        case "center":
                                            r = -p.x + n / 2;
                                            q = -p.y + t / 2;
                                            break;
                                        case "right":
                                            r = -p.x + n
                                    }
                                    switch (u) {
                                        case "middle":
                                            q = -p.y + t / 2;
                                            break;
                                        case "bottom":
                                            q = -p.y + t
                                    }
                                }
                                D.push(g.h.g3(k, l.lp, { x: r, y: q }))
                            }
                            D.push("display:" + (l.visible ? "block" : "none") + ";");
                            k.style.cssText = D.join(";");
                            if ((p = l.label) && p.content) {
                                l = l.NI;
                                s =
                                    p.direction;
                                r = null;
                                h.Su || (r = g.h.eo(l), h.Su = r);
                                u = (r = h.Su) && r[0];
                                x = r && r[1];
                                q = r = 0;
                                if (s && u && x) switch (s) {
                                    case "top":
                                        r = -x;
                                        q = (n - u) / 2;
                                        break;
                                    case "right":
                                        r = (t - x) / 2;
                                        q = n;
                                        break;
                                    case "bottom":
                                        r = t;
                                        q = (n - u) / 2;
                                        break;
                                    case "left":
                                        r = (t - x) / 2;
                                        q = -u;
                                        break;
                                    case "center":
                                        r = (t - x) / 2, q = (n - u) / 2
                                }
                                p.offset ? (r = r + p.offset.y + "px", q = q + p.offset.x + "px") : (r += "px", q += "px");
                                l.style.top = r;
                                l.style.left = q
                            }
                        } else if (h.z$ || this.zoom << 0 !== this.zoom || h.zoom !== this.zoom || k.parentNode !== this.Wk || h.Ka !== this.Ka) w = this.bu(h.da.va), h.Ka = this.Ka, y = l.xE,
                        r = Math.round(w[1] + r + y.y), q = Math.round(w[0] + q + y.x), k.style.top = r + "px", k.style.left = q + "px";
                    h.zoom = this.zoom;
                    k.parentNode !== this.Wk && (g.l.mi && g.a.iepngFix(k), c.appendChild(k));
                    h.Vd = m;
                    k.aB = this.Wk
                }
            this.Wk.appendChild(c);
            e || this.ID(d, { wR: !0 })
        },
        bu: function(a) {
            var b = a[0] - this.Ka.x;
            b > g.a.Da / 2 ? b -= g.a.Da : b < -g.a.Da / 2 && (b += g.a.Da);
            return [b / this.S, (a[1] - this.Ka.y) / this.S]
        }
    });
    var Kc = g.A,
        Sc = g.l,
        ec = g.aa.iu,
        Tc = g.Sta,
        fa = document,
        Uc = !0,
        Vc = [];
    Sc.Bf && Vc.push("touch");
    Sc.Z || Vc.push("mouse");
    Sc.fK && (Vc.push("vectorlayer", "overlay"), Sc.mq ? Vc.push("wgl") : Vc.push("cgl"));
    if (Tc) {
        for (var Wc = [], Xc = Tc.split(","), xc = 0; xc < Xc.length; xc += 1) {
            var Yc = Xc[xc];
            ec[Yc] && Wc.push.apply(Wc, ec[Yc]);
            Wc.push(Yc)
        }
        Vc = Vc.concat(Wc)
    }
    Vc.push("sync");
    if (Sc.Zr) {
        var Zc = !0,
            $c = [],
            ad = [];
        try {
            for (var xc = 0, bd = Vc.length; xc < bd; xc++) {
                var cd = JSON.parse(localStorage.getItem("_AMap_" + Vc[xc]));
                if (cd && cd.version === Kc.vj) $c.push(cd.script), cd.css && ad.push(cd.css);
                else {
                    $c = void 0;
                    Zc = !1;
                    break
                }
            }
        } catch (dd) { $c = ad = void 0, Zc = !1 }
        if (Zc) try {
            ad.length && ed();
            var fd = $c.join(";");
            eval(fd)
        } catch (gd) { Uc = !1 } else Uc = !1
    } else Uc = !1;
    if (Uc)
        for (xc = 0; xc < Vc.length; xc += 1) g.qb.eC(Vc[xc]).status = 1;
    else Kc.YC = !1, hd();

    function id() {
        for (var a = fa.getElementsByTagName("script"), b, c = 0; c < a.length; c += 1)
            if (0 === a[c].src.indexOf(Kc.yb + "/maps?")) { b = a[c]; break }
        return Kc.Gc || b && b.async
    }

    function hd() {
        var a = Kc.yb + "/maps/modules?v=" + Kc.cr + "&key=" + Kc.key + "&vrs=" + Kc.vj + "&m=" + Vc.join(",");
        id() ? jd(a) : (fa.write('<script crossorigin="anonymous" id="amap_plus_js" src="' + a + '" type="text/javascript">\x3c/script>'), setTimeout(function() { fa.getElementById("amap_plus_js") || jd(a) }, 1))
    }

    function jd(a) {
        var b = fa.createElement("script");
        b.charset = "utf-8";
        b.src = a;
        b.id = "amap_plus_js";
        (a = fa.head || fa.getElementsByTagName("head")[0] || fa.body) && a.appendChild(b)
    }

    function ed() {
        var a = ad.join("\n"),
            b = fa.createElement("style");
        b.type = "text/css"; - 1 === Kc.yb.indexOf("webapi.amap.com") && (a = a.replace(/webapi.amap.com/gi, Kc.yb.split("://")[1]));
        "https" === Kc.Bc && (a = a.replace(/http:/gi, "https:"));
        if (b.styleSheet) {
            var c = function() { try { b.styleSheet.cssText = a } catch (c) {} };
            b.styleSheet.disabled ? setTimeout(c, 10) : c()
        } else b.appendChild(fa.createTextNode(a));
        c = fa.head || fa.getElementsByTagName("head")[0];
        2 > c.childNodes.length ? c.appendChild(b) : c.insertBefore(b, c.childNodes[1])
    };
})(["df2d1175d0b6a0b2823a17b241e29e59", [123.754497, 45.382657, 125.808845, 47.478802, 125.11272, 46.590734], "https://webapi.amap.com", 1, "1.4.14", null, "230600", "", true, true, true, true, "1555425851-1"])